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

2022-09-23 09:39:18 字數 1059 閱讀 3714

插入排序的思想為:從陣列的第二個元素開始遍歷整個陣列。針對每個元素,依次將其前面的所有元素和他進行比較,大於它的元素均向後移動,最後將該元素插入。

插入排序是一種穩定的排序演算法。

時間複雜度t(n)=o(n^2)

最好情況下已排好序,t(n)=o(n)

private void swap(int a, int i, int j) 插入排序的關鍵**

private void insertsort(int a)

a[j+1] = tmp;

} }氣泡排序的思想為:從第乙個元素開始相鄰的兩個元素兩兩比較,按照小數在上大數在下的規則交換,一趟下去大數沉底。

再從第乙個元素開始兩兩比較相鄰兩個元素,直到倒數第二個元素

....

氣泡排序也是穩定的排序演算法

氣泡排序的複雜度均為t(n)=o(n^2)

插入排序的關鍵**

public void bubblesorts(int a)

}} }注釋是對氣泡排序的改進,當沒有呼叫swap函式表明已經排好序了。這樣可以在最好情況下達到時間複雜度為t(n)=o(n)

從所有序列中先找到最小的,然後放到第乙個位置,之後再看剩餘元素中最小的,放到第二個位置……以此類推

選擇排序是不穩定的排序演算法,比如[3,3,1]第一次交換時第乙個三就會跑到第二個3後面去。

選擇排序的複雜度均為t(n)=o(n^2)

選擇排序的關鍵**

public void selectsort(int a)

}swap(a, i, minindex);

} }穩定性指具有相同值得元素在輸出陣列中的相對次序保持和輸入陣列一致。穩定性是排序演算法的乙個重要指標,基數排序就要用到穩定的排序演算法作為其子過程。

可能這樣的概念解釋還不是很清晰。舉個例子,我們在實際應用中不會僅僅是比較數字這麼簡單,可能是比較乙個物件,乙個物件有很多屬性。比如兩個學生的成績包含語文和數學,a[80,90],b[80,85],在對語文成績排序時要保證a在b前,因為對語文成績來說a和b是一樣,但乙個物件還包含數學成績,不能再對語文成績排序的時候打亂了數學成績的順序。

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

氣泡排序,選擇排序,插入排序 小規模的檔案以及基本有序的檔案,插入排序的效能比快速排序的效能更為有效一些,實際上,插入排序通常也做快速排序實現的一部分。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為陣列長度 插入排序是從第二個元素開始快取,然後向前比較,...