您的位置 首页 知识

c语言排序代码(c语言如何从小到大排序)

c语言,怎么把3个数字按大小顺序排列?

在 C 语言中,可以使用冒泡排序算法来对 3 个数字进行排序。冒泡排序算法的基本思想是:每次比较相邻的两个元素,如果它们的顺序不对就交换它们,一次遍历后,最大的元素就在数组的末尾。然后再次对剩余的元素进行比较,直到整个数组有序。

以下是一个使用 C 语言实现冒泡排序算法对 3 个数字进行排序的示例代码:

#include <stdio.h>

// 冒泡排序函数

void bubbleSort(int arr[], int n) {

int i, j, temp;

for (i = 0; i < n – 1; i++) {

for (j = 0; j < n – i – 1; j++) {

if (arr[j] > arr[j + 1]) {

temp = arr[j];

arr[j] = arr[j + 1];

arr[j + 1] = temp;

}

}

}

}

// 输出数组元素函数

void printArray(int arr[], int n) {

int i;

for (i = 0; i < n; i++) {

printf(“%d “, arr[i]);

}

printf(“n”);

}

int main() {

int arr[] = {5, 2, 9};

int n = sizeof(arr) / sizeof(arr[0]);

printf(“原始数组: “);

printArray(arr, n);

bubbleSort(arr, n);

printf(“排序后的数组: “);

printArray(arr, n);

return 0;

}

在上述示例代码中,首先定义了一个 bubbleSort 函数用于实现冒泡排序算法,然后定义了一个 printArray 函数用于输出数组元素。在 main 函数中,定义了一个包含 3 个数字的数组 arr,并使用 sizeof 运算符获取数组的大小

C语言,输入一组数进行排序,由大到小?

#include <stdio.h>

main(void)

{

int i,j,a[10],p=0,t=0,temp;

printf(“请输入原数组:n”);

for(j=0;j<10;j++)

scanf(“%d”,&a[j]);

temp=a[0];

for(j=0;j<9;j++)

{

t=j;

temp=a[j];

for(i=j+1;i<10;i++)

if(temp>a[i]) //这是由小到大排序 如果是大到小则改为 if(temp<a[i])

{temp=a[i];p=i;}

{temp=a[p];a[p]=a[t];a[t]=temp;}

}

printf(“排序后的数组为:n”);

for(j=0;j<10;j++)

printf(“%d “,a[j]);

}

c语言中的快速排序代码,有错误,运行一下出现内存问题,c语言初学者,望指出错误和注意点。

  • #include stdio.hint sort(int,int,int);void arrang(int *);int main(){int a[10];int i; printf("请输入十个数的序列:n"); for(i=0;i10;i++) {scanf("%d",a+i);} printf("排序前的序列为:n"); arrang(*a); sort(a,0,9); printf("从大到小排的序列为:"); arrang(*a); return 0;}void arrang(int *a){ int i=0; for(;i10;i++); { printf("%d ",a[i]); printf("n"); }}int sort(int *a,int l,int r){ int i=l,j=r,x; int z=a[(l+r)2]; while(i=j) { while(a[i]z) l++; while(a[j]z) r–; if(i=j) {x=a[i];a[i]=a[j];a[j]=x;} } if(lj) sort(a,l,j); if(jr) sort(a,j,r);}
  • #include stdio.hint sort(int,int,int); 问题1 函数声明错误int sort(int *a,int l,int r);void arrang(int *);int main(){ int a[10]; int i; printf("请输入十个数的序列:n"); for(i=0;i10;i++) {scanf("%d",a+i);} printf("排序前的序列为:n"); arrang(*a); 问题2 调用错误 arrang(a); sort(a,0,9); printf("从大到小排的序列为:"); arrang(*a); 问题2 调用错误 arrang(a); return 0;}void arrang(int *a){ int i=0; for(;i10;i++); { printf("%d ",a[i]); printf("n"); }}int sort(int *a,int l,int r){ int i=l,j=r,x; int z=a[(l+r)2]; while(i=j) { while(a[i]z) l++; while(a[j]z) r–; if(i=j) {x=a[i];a[i]=a[j];a[j]=x;} } if(lj) sort(a,l,j); if(jr) sort(a,j,r); return 0; 问题3 根据声明必须有返回值 要加上}

跪求五位数的位数排序代码 c语言代码

  • 输入一个五位整数,对此整数中的五个数值进行从大到小的顺序排序,形成一个新的五位整数,并输出这个整数。要求:用函数调用。
  • #includestdio.hvoid sort(int b[]);main(){char a[5];int b[5],i;gets(a); for(i=0;i5;i++)b[i]=a[i]-48;sort(b);for(i=0;i5;i++)printf("%d",b[i]); } void sort(int b[]){int i,j,t; for(i=0;i4;i++){for(j=0;j4-i;j++){if(b[j]b[j+1]){t=b[j];b[j]=b[j+1];b[j+1]=t; }} }} 不懂就问 望采纳

c语言将一个链表排序帮忙看下代码

  • void pai(struct TxlNode *head){struct TxlNode *e;struct TxlNode *f;struct TxlNode *z;struct TxlNode *x;e=(struct TxlNode *)malloc(sizeof(struct TxlNode));f=(struct TxlNode *)malloc(sizeof(struct TxlNode));e-next=head;z=e-next;x=f;if(f-next==NULL){f-next=z;z=z-next;e-next=z;x=f-next;x-next=NULL;}else{for(;e-next!=NULL;z=z-next)x=f-next;for(;x-next!=NULL;x=x-next)if(strcmp(z-Name,x-Name)0){if(x-next==NULL){x-next=z;z=z-next;x=x-next;x-next=NULL;break;}}}head=f;}有错么? 求指导
  • 适用于有头结点的单链表,按姓名升排序void Sort(struct TxlNode *head){struct TxlNode *p,*q,*pt;p = head;while(p-next) {q = p-next;while(q-next) {if(strcmp(q-next-Name,p-next-Name) 0) {pt = p-next;p-next = q-next;q-next = p-next-next;p-next = pt;}else q = q-next;}p = p-next;}}

c语言 选择排序 for循环代码出错

  • 循环代码不知道哪里错了帮忙看一下void XuanZe(int *p){int b[51],i,j,compare=0, move=0;for(i=0;i51;i++) b[i] = *(p+1);{ compare=i; for(j=i+1;j51;j++) if(b[j]b[compare]) compare=j; if(compare!=i) { move=b[compare]; b[compare]=b[i]; b[i]=move; }}printf("采用选择排序:n"); for(i=1; i51; i++) { r[i]=b[i]; printf("%3d", b[i]); if(i%10==0) printf("n"); } printf("选择排序比较次数%d,移动次数%dn", compare, move);}全部代码截图:
  • 1)你的选择排序函数明星有问题,第一个for循环结束,只执行了b[i]=*(p+1),数组里成了相同的数,此处应该是p+i更合适。2)上面循环结束后i=51,你后面让j=i+1,后面的循环也就不可能执行,后面的判断compare!=i也就永远成立。3)你要打印移动和交换次数,其中的compare和move和这两项操作没关系,记录的是移动的数值,怎么可能是次数。

返回顶部