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 }

从今天开始把大学写的代码,陆续发到博客上吧。

posted @ 2015-10-27 20:26  默默笙萧  阅读(3445)  评论(0编辑  收藏  举报