C语言 - 冒泡排序算法(交换排序) 从大到小
1 #include<stdio.h> 2 struct node 3 { 4 int key; 5 }; 6 typedef struct node DataType; 7 8 int Bub_sort(DataType Ar[],int n); 9 10 int main(void) 11 { 12 int n,i; 13 DataType array[20]; 14 15 printf("Input the length of the array <<20>:"); 16 scanf("%d",&n); 17 for(i=0; i<n; i++) //输入数组 18 { 19 printf("Input %d datas:",i+1); 20 scanf("%d",&array[i]); 21 } 22 23 printf("\n The array are:"); 24 for(i=0; i<n; i++) 25 { 26 printf("%4d",array[i]); //输入的数组显示 27 } 28 29 Bub_sort(array,n); //调用排序算法 30 printf("\n The array after Bub_sort are:"); 31 for(i=0; i<n; i++) //输出排序后的算法结果 32 { 33 printf("%4d",array[i]); 34 } 35 36 return(0); 37 } 38 39 int Bub_sort(DataType Ar[],int n) //冒泡排序算法 40 { 41 int i,flag,j; 42 DataType temp; 43 for(i=1; i<=n; i++) //对无序记录序列进行n-1趟扫描 44 { 45 flag=0; //这一趟是否发生交换的标志 46 for(j=0; j<n-i; j++) //这趟扫描的范围是从第0趟开始到n-i趟 47 { 48 if(Ar[j].key<Ar[j+1].key) //通过temp进行交换 49 { 50 temp.key=Ar[j].key; 51 Ar[j].key=Ar[j+1].key; 52 Ar[j+1].key=temp.key; 53 flag=1; 54 } 55 } 56 if(flag==0) //若没有发生交换,就结束算法 57 break; 58 } 59 }
从今天开始把大学写的代码,陆续发到博客上吧。