經典排序演算法之氣泡排序

2021-07-11 11:54:02 字數 1070 閱讀 1366

好記性不如爛筆頭。

氣泡排序屬於交換排序,交換排序的基本思想是:兩兩比較待排序記錄的關鍵字,當兩個記錄的次序相反時即進行交換,直到沒有反序的記錄為止。

#include using namespace std;

void printpro(int *input, int len)

void swap(int &fir, int &sec)

void bubblesort(int *input, int len){

if (input == nullptr || 0 == len) return;

bool ha***changed; // 交換標誌

for (int i = 0; i < len - 1; ++i) // 最多n-1趟

}if (!ha***changed) return; // 無交換,說明序列已是有序,則退出剩餘趟排序 }}

int main(int argc, char *argv)

; int len = 10;

printpro(input, len);

bubblesort(input, len);

printpro(input, len);

system("pause");

return 0;

}

演算法分析:

1)每一趟都會使無序序列中產生乙個氣泡冒上去,最多n-1趟;

2)上述**中引入bool型 ha***changed,以表示本趟是否發生交換的標誌。每趟排序前,先將ha***changed置為false。若排序過程中發生了交換,則將其置為true。每趟排序結束時檢查ha***changed,若未曾發生交換(表示已排好序)則終止演算法,不再進行下一趟排序。

3)最好時間複雜度:o(n)

即正序情況,一趟掃瞄,比較n-1次,交換0次,時間複雜度為o(n);

4)最壞時間複雜度:o(n^2)

即逆序情況,需n-1趟排序,每趟n-i次比較,時間複雜度為o(n^2);

5)平均時間複雜度:o(n^2)

6)演算法穩定性:穩定

reference:

經典排序演算法之 氣泡排序

int a 對於上面的乙個陣列,氣泡排序的原理是 依次比較相鄰元素的大小,前乙個元素若比後乙個元素大,則交換兩個元素的位置,給人的感覺是大的元素像氣泡一樣往上冒,也可以把小的元素往上冒。比較過程如下 最大值向上冒 陣列初始狀態 第一次比較後 5不比7大不交換位置 第二次比較後 7和3比較,交換位置 ...

經典演算法之氣泡排序

author s email wardseptember gmail.com date 2017.12.4 氣泡排序 氣泡排序是通過一系列的 交換 動作完成的。首先第乙個關鍵字和第二個關鍵字比較,如果第乙個大,則二者交換,否則不交換 然後第二個關鍵字和第三個關鍵字比較,如果第二個大,則二者交換,否則...

經典演算法之氣泡排序

1 演算法思想 取第i元素和第i 1個元素做比較,假如第i 1個元素大於第i個元素,則交換兩個元素。一直到待排序的集合是有序的為止。假設待排序的元素集合 5 4 3 1 第一次冒泡後的序列 4 3 1 5 第二次冒泡的序列 3 1 4 5 第三次冒泡後的序列 1 3 4 5 n元素序列一共需要比較n...