簡單排序 氣泡排序 簡單選擇排序 直接插入排序演算法

2021-08-18 02:09:06 字數 1277 閱讀 7784

一.氣泡排序

基本思想:兩兩比較相鄰記錄的關鍵字,如果反序則交換,直到沒有反序的記錄為止。

1.正宗的冒泡演算法:

function

bubblesort

(arr)}}

return arr;

}

2.改進的冒泡演算法:

function

bubblesort

(arr)}}

return arr;

}

3.複雜度分析:

時間複雜度:

最好的情況:要排序的表本身是有序的,只進行n-1次比較,複雜度o(n);

最壞的情況,順序表逆序,要比較1+2+3+…+(n-1)=n*(n-1)/2次。複雜度o(n^2)

二.簡單選擇排序

1.基本思想:就是通過n-i次關鍵字間的比較,從n-i+1個記錄中選出關鍵字最小的記錄,並和第i(1<=i<=n)個記錄交換之。

function

selectsort

(arr)

if(i!=min)

}return arr;

}

2.複雜度分析

特點:移動資料次數少,節約時間。

第i趟排序需要進行n-i次關鍵字比較,需要比較1+2+3+…+(n-1)=n*(n-1)/2次。而對於交換次數來說,最好情況為0次,最差為n-1次,最終排序時間比較次數加交換次數,總的時間複雜度為o(n^2)。效能上略優於冒泡。

三.直接插入排序

1. 基本思想:將乙個記錄插入到已經排好序的有序表中,從而得到乙個新的、記錄數增1的有序表。

function

insertsort

(arr)

}return arr;

}

2.複雜度分析

最好的情況:表有序,只需要比較arr[i]與arr[i-1],共比較了n-1次。時間複雜度為o(n).

最壞的情況:表逆序,比較(n+2)(n-1)/2次,移動(n+4)(n-1)/2次。

四.二分查詢

function search(arr,data)else

if(arr[mid]>data)else

}return -1; //沒找到返回-1

}

簡單排序 氣泡排序 簡單選擇排序 插入排序)

氣泡排序 氣泡排序,掃瞄len次,每次用下標0掃瞄到len 1 i,比較相鄰的兩個元素並交換 param num param len void bubblesort int num,int len cout b 簡單選擇排序 簡單選擇排序 掃瞄len次,每次從下標i掃瞄到len 1,每次掃瞄找到乙個...

簡單排序之簡單選擇排序

通過n i次關鍵字間的比較,從n i 1個記錄中選出關鍵字最小的記錄,並和第i 1 i n 個記錄交換之。在排序過程中 相同元素的前後順序並沒有改變,則可認為此排序為穩定排序,反之為不穩定排序。package sorts public class choosesort if min i public...

氣泡排序and簡單選擇排序

在第一趟排序中,從第乙個元素開始,掃瞄整個待排序元素序列,若相鄰的兩個元素逆序,則交換位置。直到最後乙個元素,此時,最後乙個元素必為最大的元素。第二趟排序,依然從第乙個元素開始掃瞄直到倒數第二個元素。第三趟排序,從第乙個掃瞄到倒數第三個。直到只剩乙個元素需要掃瞄。程式如下 includeint ma...