冒泡排序是穩定的排序方法。
基本思想:
像泡泡一樣,輕的往上浮,重的向下沉。即小的往前,大的往後。
從最後開始比較,依次比較。
即array[n-1,n-2],array[n-2.n-3]….array[2,1],array[1,0]。
在第一輪將最小的數浮到第一個,開始第二輪比較。
還是從最後開始,依次比較。即array[n-1,n-2],array[n-2.n-3]….array[2,1]。因爲第一個已經是最小的,所以沒有必要再和第一個數比較。
直到第n-1輪循環,將整個數組變爲從小到大的有序數組。
冒泡排序原理圖解:
代碼實現:
#include <iostream>
//冒泡排序
void bubble_sort(int a[] , int len)
{
//總共比較n - 1輪數
for (int i = 0 ; i < len - 1 ; i++) {
//從最後開始比較,讓大的數向後移動,小的數向前移動,直到將最小的一個數移到最前面,開始下一次循環。
for (int j = len - 1 ; j > i ; j--) {
//交換位置
if (a[j] < a[j-1]) {
int temp;
temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
}
}
}
for (int i = 0; i < len ; i++) {
std::cout<<a[i]<<" ";
}
}
int main(int argc, const char * argv[]) {
int a[] = { 11 , 22 , 44 , 55 , 63 , 76 , 8 ,9 ,3 , 5 };
std::cout<<"需要排序的一組數爲:"<<std::endl;
for (int i = 0; i < 10; i++) {
std::cout<<a[i]<<" ";
}
std::cout<<std::endl;
std::cout<<"冒泡排序:"<<std::endl;
bubble_sort(a , 10);
return 0;
}
大家有問題可以提出來,一起共同學習交流,共同進步。