4 快速排序

2021-07-08 21:44:35 字數 877 閱讀 8819

/*

*2015,煙台大學計算機與控制工程學院

*檔名稱:haxibiao.cpp

*完成日期:2023年12月14日

*問題描述: 用序列作為測試資料,

*(1)直接插入排序;(2)希爾排序;(3)氣泡排序;(4)快速排序;(5)直接選擇排序;(6)堆排序;(7)歸併排序;(8)基數排序。

/*

#include #define maxsize 20

typedef int keytype; //定義關鍵字型別

typedef char infotype[10];

typedef struct //記錄型別

rectype; //排序的記錄型別定義

void quicksort(rectype r,int s,int t) //對r[s]至r[t]的元素進行快速排序

{ int i=s,j=t;

rectype tmp;

if (si && r[j].key>=tmp.key)

j--; //從右向左掃瞄,找第1個小於tmp.key的r[j]

r[i]=r[j]; //找到這樣的r[j],r[i]"r[j]交換

while (i

執行結果:

學習心得:

任取乙個元素作為基準,把它放入適當位置,資料序列將被分成兩部分,關鍵字比該基準的關鍵字小的部分,關鍵字比基準的關鍵字大的一部分,以此類推。

排序 4 快速排序

快速排序和氣泡排序一樣屬於交換排序,它是一種非常高效的排序。它採用了一種分治的策略,把大的拆分成 小的,再把小的拆分為更小的。快速排序是一種不穩定的排序 時間複雜度 最好情況 o nlogn 最壞情況 o n2 平均情況 o nlogn 空間複雜度 o logn 那麼快速排序主要是什麼思想呢?對於一...

4 快速排序

快速排序是一種分治的遞迴演算法,從本質上來說,它是歸併排序的就地版本。屬於原址排序。1 思路 把待排列的資料分為兩個子列,從數列中挑出乙個數作為 基準 然後遍歷其他資料並和 基準 比較,把小於它的放前面,大於它的放後面。之後通過遞迴,將各個子串行劃分為更小的序列,直到把小於基準值元素的子數列和大於基...

排序演算法4 快速排序

編寫乙份快速排序,完成對元素序列37,19,43,22,22,89,26,92按照從小到大順序排列。演算法思想 快速排序是氣泡排序演算法的改進,也屬於交換型別的排序演算法,它的基本思想描述如下 1 從第j個元素開始向前依次將每個元素與樞軸元素pivot比較。如果當前元素大於pivot,則比較前乙個元...