Java資料結構與演算法 排序

2021-08-17 04:03:01 字數 943 閱讀 1770

直接插入排序是資料越有序越快,最快時間複雜度可達到o(n),選擇排序無論何時都是o(n^2), 快速排序越有序越慢,它要從後到前遍歷找比基準小的,時間複雜度達到o(n),堆排序需要不斷進行調整,時間複雜度為o(nlog2^n)

定理:通過交換相鄰元素進行排序的任何演算法平均都需要》=(n*n)時間。

作為交換相鄰元素來排序的一種演算法(如氣泡排序、選擇排序),其:

/**

* 插入排序,o(n*n)

* *@param array

* 陣列

*/public

static

super anytype>> void

insertionsort(anytype array)

array[hole] = temp;

}}

希爾排序是對插入排序的改進,但是其時間效率和選擇的增量有關,採用希爾增量時最壞時間仍然是=(n*n)。

/**

* 希爾排序,使用希爾增量,o(n*n)

* *@param array

* 陣列

*/public

static

super anytype>> void

shellsort(anytype array)

}}

**見這裡

**見這裡

陣列s排序的基本演算法由4步組成:

如果s中元素個數小於等於10個,就採用插入排序;

取s中乙個元素為樞紐元素v(推薦使用三數中值分割法);

把剩下s-1個元素分成兩個不相交的集合:s1(元素小於等於樞紐元素),s2(元素大於等於樞紐元素);

分好後的陣列排序為:s1+v+s2。

**見這裡

java資料結構與演算法 快速排序

該方法的基本思想是 1 先從數列中取出乙個數作為基準數。2 分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。3 再對左右區間重複第二步,直到各區間只有乙個數。雖然快速排序稱為分治法,但分治法這三個字顯然無法很好的概括快速排序的全部步驟。因此我的對快速排序作了進一步的說明 ...

Java資料結構與演算法 六 希爾排序

插入排序在對幾乎已經排好序的資料操作時,效率高,即可以達到線性排序的效率。但插入排序一般來說是低效的,因為插入排序每次只能將資料移動一位。system.out.println 排序之前 for int i 0 iout.print a i 希爾排序 int d a.length while true...

Java資料結構與演算法 六 希爾排序

一 希爾排序的產生 二 希爾排序是基於插入排序的以下兩點性質而提出改進方法的 插入排序在對幾乎已經排好序的資料操作時,效率高,即可以達到線性排序的效率。但插入排序一般來說是低效的,因為插入排序每次只能將資料移動一位。public static void main string args system...