基本排序算法之冒泡排序

来源:互联网 发布:巨人网络收购alpha 编辑:程序博客网 时间:2024/06/07 03:50

冒泡排序的基本方法是:设待排序元素序列中的元素个数为n,首先比较第1个和第二个元素,如果前一个元素大于后一个元素,则将两个元素互换;然后对第二个(可能是刚换过来的)和第三个元素做同样的处理;重复此过程直到处理完第n-1和第n个元素。我们称它为一趟冒泡排序,结果将最大的元素移到最后一个位置,其他元素也都向排序的最终位置移动,当然个别情况下元素有可能在排序中向相反的位置移动,但元素移动的总趋势是向最终位置移动。这样每一趟冒泡就把排序吗最大的元素移到它最终的位置,最多n-1趟冒泡就能把所有的元素排好序。

优化:
在算法中可增加一个标志exchange,用以标识本趟冒泡结果是否发生了逆序和交换,如果没有发生交换则exchange = false,表示全部元素已经排好序,因而可以终止处理,结束算法。如果exchange = true,表示本趟有元素发生交换,还需执行下一趟排序
<pre name="code" class="cpp">优化的代码:

<pre name="code" class="cpp">
void bubbleSort(int* arr,int n){bool exchange = false;for (int i = 0; i < n; i++){exchange = false;for (int j = 0; j < n - i -1; j++){if (arr[j] > arr[j+1])//交换元素{int tmp = arr[j];arr[j] = arr[j+1];arr[j+1] = tmp;exchange = true;//置exchange为有交换状态}}if (exchange){break;//终止算法}}}

0 0
原创粉丝点击