mydjm

 

冒泡排序

 1 #include<stdio.h>
2
3 void BubbleSort(int *a,int n)
4 {
5 int temp,i,j;
6 for(i=1;i<n-1;i++)//从1开始,每次j都从最后一个数开始往前比较,直到j遇到i。因为i前面的比较完成的了。
7 for(j=n-1;j>=i;j--)
8 {
9 if(a[j-1]>a[j])
10 {
11 temp = a[j];
12 a[j] = a[j-1];
13 a[j-1] = temp;
14 }
15 }
16 return ;
17 }
18
19 void main()
20 {
21 int n,i,a[50];
22 scanf("%d",&n);
23 for(i=0;i<n;i++)
24 scanf("%d",&a[i]);
25 BubbleSort(a,n);
26 for(i=0;i<n;i++)
27 printf("%d ",a[i]);
28 }


运行截图:

 

一开始忘了书里怎么写的,就自己用个smallest记录目前最小的,最后把最小的跟第一个交换,然后第二个。。

后来看了下书,对啊!冒泡就是一直交换的嘛。。所以才叫冒泡。。但是我觉得,用个smallest记录下来的话,比较的次数是

一样的,但是交换的次数减少很多,从O(n2)降到O(n)了。

posted on 2012-03-22 15:57  mydjm  阅读(160)  评论(0编辑  收藏  举报

导航