資料結構經典排序 快速排序

2021-06-18 10:43:12 字數 865 閱讀 6246

快速排序:是氣泡排序的改進,採用分治思想實現

演算法思想:通過一趟排序將待排記錄分成兩部分,其中一部分記錄的關鍵字均比另一部分記錄的關鍵字小,則可分別對這兩部分記錄繼續進行排序,以達到整個序列有序。

一趟快速排序的具體做法是:設兩個指標low和high,他們的初值分別為low和high,設樞紐記錄的關鍵字為pivotkey,則首先從high所指的位置起向前搜尋到第乙個關鍵字小於樞紐記錄,將該記錄移到low所在的位置。然後從low所指位置起向後搜尋,找到第乙個關鍵字大於樞紐記錄pivotkey,將該記錄移到high所在的位置。直到一趟排序結束後再將樞紐記錄移到正確位置,即low所在位置。

總結:就平均時間而言,快速排序是目前被認為是最好的一種內部排序方法。

缺點與不足:1、當待排序列按關鍵字有序或基本有序時,快速排序將蛻化為氣泡排序,其時間複雜度為o(n*n);

2、快速排序需要乙個桟空間來實現遞迴。桟的最大深度為[logn]+1,

3、快速排序不是穩定的排序。

public class quicksort

data[low]=pivotkey;//樞紐記錄到位

return low;//返回樞紐的位置

}public static void quicksort(int data,int low,int high)

} public static void display(int data,int length)

}public static void main(string args);

quicksort qs = new quicksort();

qs.quicksort(data, 0, data.length-1);

display(data,data.length);}}

資料結構 排序 快速排序

對序列 47,31,83,91,57,18,96,16 進行快速排序 首元素為基準 第二趟排序結果是 正確答案 b 你的答案 c 錯誤 18 31 16 47 57 91 96 83 16 31 18 47 57 91 96 83 16 18 31 47 57 91 96 83 16 18 31 4...

資料結構 排序 快速排序

快速排序在平均情況下是效果最好的排序演算法 每趟子表的排序都是從兩頭向中間交替逼近,接下來舉乙個例子 sorry,上面這個圖的6和5的位置畫反啦,快速排序全域性有序,一趟排序便可以確定基準值的最終位置 類別排序方法 最好時間 最壞時間 平均時間 空間複雜度 穩定性序列特徵 適用於插入排序 直接插入排...

資料結構排序 快速排序

快速排序是對氣泡排序的改進,它的基本思想是通過一趟排序將資料分成兩部分,一部分中的資料都比另一部分中的資料小,再對這兩部分中的資料再排序,直到整個序列有序,如下圖所示。快排的遞迴實現 1 include 2 include 3 4intn 5 6 7 分割使樞軸記錄的左邊元素比右邊元素小8 9int...