冒泡排序的改良

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #define LEN 10
 4 
 5 int main()
 6 {
 7     //min记录最小值的位置。
 8     int i,j,tmp,min,array[LEN];
 9 
10     //输入数据
11     printf("please input members:");
12     for(i=0; i<LEN; i++)
13     scanf("%d",&array[i]);
14 
15     //输出原数据
16     for(i=0; i<LEN; i++)
17     printf("%d ",array[i]);
18     printf("\n");
19 
20     //单向冒泡排序。
21     /*for(i=0;i<LEN-1;i++)
22     for(j=i+1;j<LEN;j++)
23     {
24         if(array[i]>array[j])
25         {
26             tmp = array[j];
27             array[j]=array[i];
28             array[i]=tmp;
29         }
30     }*/
31 
32     //经典100例,如果数据多的话,用这个是比较合算的。
33     for(i=0; i<LEN-1; i++)
34     {
35         min = i;
36         for(j=i+1; j<LEN; j++)
37         {
38             if(array[min]>array[j])
39             {
40                 min=j;
41             }
42         }
43 
44         if(i==min)
45         continue;
46 
47         tmp = array[min];
48         array[min]=array[i];
49         array[i]=tmp;
50 
51     }
52 
53     //输出结果。
54     printf("\nresult is:\n");
55     for(i=0; i<LEN; i++)
56     printf("%d ",array[i]);
57     printf("\n");
58 
59     // printf("Hello world!\n");
60     return 0;
61 }

 

 

posted @ 2012-05-07 13:51  zhengmian  阅读(476)  评论(0)    收藏  举报