選擇排序和氣泡排序

2021-08-25 14:21:55 字數 1100 閱讀 1554

#選擇排序和氣泡排序#

複習基礎演算法,同時作為備忘錄

這個演算法首先假定最大最小的元素,需要三個變數表示元素的下標,分別表示當前,最大/小,每次迴圈最大/小。按照這個思想寫出**

選擇排序:

#include

void

main()

}}

再說氣泡排序。主要採用相鄰兩數兩兩比較,如果後乙個比前乙個大或者小,

則將其調換位置,直至所有的數都比較完。如果給定乙個大小為n的陣列,

那麼需要比較n-1趟,每一趟比較n-1-i次 ,i 表示上次迴圈中已經

比較完的下標。寫兩個迴圈判斷,如需交換則進行交換,

如果不需要交換則進行下兩個數的比較,直到所有的數比較完。主要**如下:

#include

#define n 10

void

main()

}for

(i=0

;i<

10;i++

)printf

("%d "

,a[i]);

printf

("\n");

return0;

}

每一遍開始,設定change=false。處理時,一旦發生資料交換,就將change修改為true。結束時,若change未變,表示未發生資料交換,即已遞增有序,如當前數列,a0,a1……ai,ai+1,……,an-1,當前處理範圍是a0ai,0<=i<=n,如果a0ai已經有序,顯然不會發生資料交換,所以change未變,即已經是遞增有序,排序可結束,否則會發生資料交換,change會被修改為true,需要下一遍的處理

具體改進**

//類c語言描述 

void

bubble

(int a,

int n)}}

while

(change&&

--i>=1)

//1或n-1

}//最好的情況演算法複雜度:t最好(n)=o(f最好(n))=o(n)

//最壞情況下演算法複雜度: t最壞(n)=o(f最壞(n))=o(n*n)

參考

排序 氣泡排序和選擇排序

目錄 氣泡排序 氣泡排序原理圖 demo 執行 選擇排序 氣泡排序原理圖 demo 執行 說明 include include using namespace std name 氣泡排序法 number 傳入陣列 length 陣列長度 setw 需要匯入 include ps 這是乙個lib.h的...

選擇排序和氣泡排序

選擇排序和氣泡排序 演算法 蠻力法選擇排序,第一次掃瞄整個陣列,找到最小元素,然後和第乙個元素交換。第二次從第二個元素開始掃瞄陣列,找到剩下的元素中最小的與第二個元素交換位置,直到最後。89 45 68 90 29 3417 17 45 68 902934 89 17 29 68 90 453489...

選擇排序和氣泡排序

選擇 從小到大排序 int a 5 a 0 a 1 a 2 a 3 a 4 5 4 3 2 1 1 5 4 3 2 第一輪比較 拿a 0 和後面的元素依次比較 如果a 0 a i 那麼兩個數交換 1 2 5 4 3 第二輪比較,拿a 1 和後面的元素依次比較,如果a 1 a i 那麼兩個數交換 1 ...