算法回顾(一):冒泡排序

排序问题是计算机科学中比较基础的一个问题,目的就是将一组无序的数据整理成有序的状态。

今天要回顾的就是在计算机算法课上可以说必讲的一个排序算法----冒泡排序。

 冒泡排序包括一个简单的双重循环。第一次的内部for循环从记录数组的底部比较到顶部,比较相邻的关键码。如果低序号的关键码值比高序号的关键码值大,则将二者交换顺序。一旦遇到一个最小关键码值,这个过程将使它像一个“气泡”一样被推到数组的顶部。第二次在重复调用上面的过程,但是,既然知道最小元素第一次就被排到了数组的最上面,因此就不没有必要再比较最上面的两个元素了。

代码实现如下:

 1 void bubbleSort(int array[], int n)
 2 {
 3     for (int i=0; i<n; ++i) {
 4         for (int j=n-1; j>i; --j) {
 5             if (array[j] < array[j-1]) {
 6                 swap(array[j], array[j-1]);
 7             }
 8         }
 9     }
10 }
11 
12 
13 int main()
14 {
15     int a[] = {5,4,7,34,3,8,9,2,2,44,555,8};
16     
17     bubbleSort(a, sizeof(a)/sizeof(int));
18     
19     for (int i=0; i<sizeof(a)/sizeof(int); ++i) {
20      cout<<a[i]<<endl;
21     }
22     
23     return 0;
24 
25 }

 

 输出结果:

posted on 2013-08-04 23:10  隔热  阅读(189)  评论(0编辑  收藏  举报