1. 程式人生 > 其它 >第八章 排序演算法

第八章 排序演算法

考試要求: 理解內排序和外排序的區別; 掌握排序的穩定性; 對直接插入排序、氣泡排序、簡單選擇排序、Shell排序、快速排序、堆排序、歸併排序、基數排序這些演算法,掌握其在時間複雜度、空間複雜度以及是否穩定等方面的特點; 瞭解K路歸併的外排序演算法; 具有在不同的應用需求下,能夠根據各種排序演算法特點選擇合適排序演算法的能力。

1.排序的定義,包括內排序和外排序

  (1)排序定義:排序,就是重新排列表中的元素,使表中的元素滿足按關鍵字排序的過程。

  (2)內排序:是指在排序期間元素全部存放在記憶體中的排序。

  (3)外排序:是指在排序期間元素無法全部同時存放在記憶體中,必須在排序的過程中根據要求不斷地在內、外存之間移動的排序。

2.排序的穩定性定義

  演算法的穩定性:若待排序表中有兩個元素Ri和Rj,其對應的關鍵字相同即keyi = keyj,且在排序前Ri在Rj前面,若使用某一種排序演算法後,Ri仍在Rj前面,則稱這個演算法是穩定的,否則稱這個演算法是不穩定的。

3.插入排序

  (1)直接插入排序

  (2)Shell排序

4.交換排序

  (1)氣泡排序

  (2)快速排序

5.選擇排序

  (1)簡單選擇排序

  (2)堆排序

6.歸併排序

7.基數排序

8.K路歸併排序的排序過程

考試要求

理解內排序和外排序的區別;

掌握排序的穩定性;

對直接插入排序、氣泡排序、簡單選擇排序、Shell排序、快速排序、堆排序、歸併排序、基數排序這些演算法,掌握其在時間複雜度、空間複雜度以及是否穩定等方面的特點;

瞭解K路歸併的外排序演算法;

具有在不同的應用需求下,能夠根據各種排序演算法特點選擇合適排序演算法的能力。