2 6 氣泡排序 插入排序 選擇排序

2021-10-02 00:04:26 字數 1375 閱讀 8724

這三大經典排序演算法的時間複雜度都是 o(

基本思想

元素兩兩比較,將最大/最小元素交換到隊尾

從無序序列頭部開始,進行兩兩比較,根據大小交換位置,直到最後將最大(小)的資料元素交換到了無序佇列的隊尾,從而成為有序序列的一部分;下一次繼續這個過程,直到所有資料元素都排好序。

**

/*氣泡排序

結果:從小到大排列陣列

*/void bubblesort(int* arr,int arrlen)

} }}

氣泡排序的優化

上述**還可以進行優化,比如當陣列是時已經是有序了,可上述**還是會執行n(n-1)/2次,可以新增乙個是否排序的標誌進行判斷

/*氣泡排序優化:新增是否已排序的標誌

結果:從小到大排列陣列

*/void bubblesort(int* arr,int arrlen)

} }}

基本思想

從第乙個元素開始,該元素可以認為已經被排序

取出下乙個元素,在已經排序的元素序列中從後向前掃瞄

如果該元素(已排序)大於新元素,將該元素移到下一位置

重複步驟 3,直到找到小於或等於新元素的已排序的元素

將新元素插入到該元素的位置後

重複步驟 2~5

插入排序原理示意

**

/*選擇排序

結果:從小到大排列陣列

*/void selectsort(int* arr,int arrlen)

}arr[i]=min;}}

基本思想

將待排序序列分為兩部分,一部分為有序序列,另一部分為無序序列。

第一趟:從a[0]到a[n-1]中找到最小的數a[i],然後將a[i]與a[0]交換,

第二趟:從a[1]到a[n-1]中找到最小的數a[j],然後將a[j]與a[1]交換

第三趟:從a[2]到a[n-1]中找到最小的數a[k],然後將a[k]與a[2]交換 ……

**

/*插入排序

結果:從小到大排列陣列

*/void inssort(int* arr,int arrlen)

arr[j+1]=tmp; } }

[1] 氣泡排序

[2] 選擇排序

[3] 插入排序步驟講解與例項分析

[4] 插入排序**講解

[5] 氣泡排序的優化

氣泡排序,選擇排序,插入排序

氣泡排序,選擇排序,插入排序 小規模的檔案以及基本有序的檔案,插入排序的效能比快速排序的效能更為有效一些,實際上,插入排序通常也做快速排序實現的一部分。1 氣泡排序 packagedatastrut public classbubblesort public voidinsert longvalue...

選擇排序 , 插入排序 , 氣泡排序

編寫 include void println int array,int len 列印給定長度的陣列 printf n void swap int array,int i,int j 交換陣列中兩個位置的元素 void selectionsort int array,int len o n n 對...

氣泡排序 插入排序 選擇排序

氣泡排序是每輪比較未排序部分,從第乙個元素開始找最值,比較相鄰數字,依次往後推移,最終將最值置於最右。假設有n個數,外迴圈迴圈n 1遍,內迴圈是n 1在減去當前是第幾次外迴圈。void bubble sort mytype a,int n n為陣列長度 插入排序是從第二個元素開始快取,然後向前比較,...