排序演算法總結(java實現)

2021-09-01 08:49:20 字數 2093 閱讀 9154

排序演算法的分類如下:

1.插入排序(直接插入排序、折半插入排序、希爾排序);

2.交換排序(冒泡泡排序、快速排序);

3.選擇排序(直接選擇排序、堆排序);

4.歸併排序;

5.基數排序。

關於排序方法的選擇:

(1)若n較小(如n≤50),可採用直接插入或直接選擇排序。

當記錄規模較小時,直接插入排序較好;否則因為直接選擇移動的記錄數少於直接插人,應選直接選擇排序為宜。

(2)若檔案初始狀態基本有序(指正序),則應選用直接插人、冒泡或隨機的快速排序為宜;

(3)若n較大,則應採用時間複雜度為o(nlgn)的排序方法:快速排序、堆排序或歸併排序。

[b] 氣泡排序----交換排序的一種[/b]

效能:比較次數o(n^2),n^2/2;交換次數o(n^2),n^2/4

public int bubblesort(int data, string sorttype)

} else if (sorttype.equals("desc")) }}

}return data;

}

[b] 直接選擇排序法----選擇排序的一種[/b]

方法:每一趟從待排序的資料元素中選出最小(或最大)的乙個元素, 順序放在已排好序的數列的最後,直到全部待排序的資料元素排完。

效能:比較次數o(n^2),n^2/2

交換次數o(n),n

交換次數比氣泡排序少多了,由於交換所需cpu時間比比較所需的cup時間多,所以選擇排序比氣泡排序快。

但是n比較大時,比較所需的cpu時間佔主要地位,所以這時的效能和氣泡排序差不太多,但毫無疑問肯定要快些。

public int  selectsort(int data, string sorttype) 

} else if (sorttype.equals("desc"))

}swap(data, data.length - i, index);}}

return data;

}

[b] 插入排序[/b]

方法:將乙個記錄插入到已排好序的有序表(有可能是空表)中,從而得到乙個新的記錄數增1的有序表。

效能:比較次數o(n^2),n^2/4

複製次數o(n),n^2/4

比較次數是前兩者的一般,而複製所需的cpu時間較交換少,所以效能上比氣泡排序提高一倍多,而比選擇排序也要快。

public int insertsort(int data, string sorttype) else if (sorttype.equals("desc"))}}

}}return data;

}

[b] 快速排序[/b]

快速排序使用分治法(divide and conquer)策略來把乙個序列(list)分為兩個子串行(sub-lists)。

步驟為:

1. 從數列中挑出乙個元素,稱為 "基準"(pivot),

2. 重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面(相同的數可以到任一邊)。在這個分割之後,該基準是它的最後位置。這個稱為分割(partition)操作。

3. 遞迴地(recursive)把小於基準值元素的子數列和大於基準值元素的子數列排序。

遞迴的最底部情形,是數列的大小是零或一,也就是永遠都已經被排序好了。雖然一直遞迴下去,但是這個演算法總會結束,因為在每次的迭代(iteration)中,它至少會把乙個元素擺到它最後的位置去。

private int quicksort(int data, int low, int high)

if (i < j)

while (i < j && data[i] > x)

if (i < j)

}data[i] = x;

quicksort(data, low, i - 1);

quicksort(data, i + 1, high);

}return data;

}

java實現的排序演算法總結

網上查了好多資料,不同排序演算法的實現可能有多種,但網上有一些放到 中無法執行,各種錯誤,並且有些並不是最優演算法,以下為本人整理的比較靠譜的 1 快速排序 public class quicksort i low j hight index a i 用子表的第乙個記錄做基準 while i j a...

排序演算法總結及java實現

十種排序演算法的基本特性 排序演算法 平均時間複雜度 最好情況 最壞情況 空間複雜度 排序方式 穩定性快速排序 nlogn nlogn n2 logn in place 不穩定歸併排序 nlogn nlogn nlogn n out place 穩定堆排序 nlogn nlogn nlogn 1 i...

常用排序演算法總結 選擇排序 java實現

選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理如下。首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。選擇排序的主要優點與資料移動有關。如果某...