冒泡排序:
冒泡排序动态演示:冒泡排序演示(打开后点击图上面的Bubble Sort即可观看)
如动态图中看到的,冒泡排序(Bubble Sort)就是让大的元素往下(后)沉。
从第一个元素开始,用第一个和第二个元素比较。如果它比第二个大,就交换位置(让大的往下沉)。接着用第二个和第三个比较,重复上述过程。一直到倒数第二个和倒数第一个比较完成时,第一轮排序结束,最下面的就是最大的元素。
然后开始第二轮,由于最下面已经是最大的了,这次只要排到倒数第二个就可以了。
假设数组长度为len,即数组有len个元素。
因此一共要 len-1 轮排序。(len-1个元素已经沉下去了,剩下的一个自然就是最小的,不必再排)
而每一轮需要比较的次数是len -i - 1,(第i轮时,已经有i个元素沉下去了(i是从0开始,所以i=1时已经完成1轮了),剩下的元素是len-i,比较的次数就是len- i - 1。)
void BubbleSort(int array[], int len) { for (int i = 0; i < len -1; ++i) //最外层的大循环,一共要进行len-1轮 { for (int j = 0; j < len - i-1; ++j)//每一轮的小循环,每轮比较len-i-1次 if (array[j] > array[j + 1]) swap(array[j], array[j + 1]); //自定义swap函数,用于交换两个数 } }