冒泡排序
2012-11-29 08:31
183 查看
冒泡排序是在数据结构与算法中最为简单的一个排序方法,属于交换排序的范畴,当然也是原地排序。其机理是逐次比较,把最大的值冒出来,放在数组最后一个位置。同理,从头开始,将次大值冒出来放在数组倒数第二个位置,直到排序完成。显然两层循环嵌套,其最坏的情况是O(n-1)+O(n-2)+...+O(1),结果为O(n * n),在排序算法中属于效率较低的一类。
结果已通过测试用例,请大家批评指正。
template<typename T> void Bubble_Sort(T A[],const size_t& size) { for(int i = 0; i != size; i ++) { for(int j = size - 2; j >= 0; j --) { if(A[j] >= A[j + 1]) { T tmp = A[j]; A[j] = A[j + 1]; A[j + 1] = tmp; } } #ifdef DEBUG print(A,size); #endif } } template<typename T> void print(T A[],const size_t& size) { static int times = 0; times ++; cout << "the:" << times << "times" << endl; for(int i = 0; i != size; i ++) { cout << A[i] << '\t'; } cout << endl; }
结果已通过测试用例,请大家批评指正。