排序演算法 冒泡 選擇 插入與希爾排序

2021-10-01 02:57:43 字數 2401 閱讀 6205

思路分析:

依次比較相鄰的兩個數

將比較小的數放在前面,比較大的數放在後面

第一趟比較完後,最小的數放在第一位;那麼在第二趟的時候不需要再對第一位數進行比較

依次類推,每一趟比較次數依次減小

c++**實現:

#include

using

namespace std;

void

show

(int arr,

int n)

cout<

}void

bubblesort

(int arr,

int n)}}

}int

main()

; cout<<

"初始:"

;show

(s,10);

bubblesort

(s,10

);

cout<<

"排序後:"

;show

(s,10);

system

("pause");

}

思路分析:

假設第乙個元素最小,記為min;遍歷序列,將其他元素依次與min比較,每當有元素小於min,就將其與第一位進行位置互換

第二次遍歷的時候就不需要再對第一位進行比較了

依次類推,每次比較的次數依次減小

c++**實現:

#include

using

namespace std;

void

show

(int a,

int n)

cout<

}void

selectsort

(int a,

int len)}}

}int

main()

; cout<<

"初始:"

;show

(a,10);

selectsort

(a,10

);

cout<<

"排序:"

思路分析:

將整個序列看作有序序列無序序列無非是將無序序列的首元素插入進有序序列,(將插入位置以後的元素進行後移,如果待插入的元素與有序序列中某個元素相等,則將待插入元素插入到相等元素的後面)

c++**實現:

#include

using

namespace std;

//插入排序

void

insertionsort

(int a,

int size)

a[pre+1]

=temp;

//如果大於則直接插入 }}

//輸出二維陣列,rows是行數

void

show

(int a,

int size)

}//主函式

思路分析:

第一步將整個序列分成gap=n/2份,然後對每乙份使用插入排序

第二步,將整個序列分成gap=gap/2份,然後對每乙份使用插入排序

依次類推,最終當gap=1時,我們的排序就排好了

c++**實現:

#include

using

namespace std;

//插入排序

void

insertionsort

(int a,

int size)

a[pre+gap]

=temp;}}

}}void

show

(int a,

int size)

}//主函式

intmain()

;insertionsort

(a,7);

show

(a,7);

return0;

}

冒泡 選擇 插入 希爾排序

include include include using namespace std template void print const t a,int n 氣泡排序 每次迴圈總是將最大元素移到隊尾 o n 2 穩定的排序演算法 templatevoid bubblesort t a,int n ...

排序演算法(氣泡排序,選擇排序,插入排序,希爾排序)

工作原理 1 比較相鄰的元素。如果第乙個比第二個大,就交換它們兩個 2 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對,這樣在最後的元素應該會是最大的數 3 針對所有的元素重複以上的步驟,除了最後乙個 4 重複步驟1 3,直到排序完成。obj 10,4,29,5,7,80,34,19,8...

排序演算法一之冒泡 選擇 插入 希爾排序

本文中的前三種排序都是公升序排序,又因為這三個排序的平均時間複雜度都是o n2 最差情況也都是o n2 另外這三種排序也是其他排序如快排 希爾排序的基礎,較少,思想較容易理解,所以放在一塊。對於排序的思想可以參考嚴蔚敏的 資料結構 的書,也可以參考 大話資料結構 或者另外一本 妙趣橫生的演算法 c語...