排序问题是计算机科学中比较基础的一个问题,目的就是将一组无序的数据整理成有序的状态。
今天要回顾的就是在计算机算法课上可以说必讲的一个排序算法----冒泡排序。
冒泡排序包括一个简单的双重循环。第一次的内部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 }
输出结果: