基於C語言實現快速排序

2021-10-04 04:32:59 字數 922 閱讀 5107

快速排序的基本思想是:

1.先從陣列中取出乙個數作為基準數。

2.將小於或等於它的數全放到它的左邊,大於它的數全放到它的右邊。

3.再對左右區間重複第 2 步,直到各區間只有乙個數。

更易於理解的排序邏輯是「挖坑+遞迴」:

請移步此微軟大佬的文章:白話經典演算法系列之六 快速排序 快速搞定

時間複雜度:o(n2)

//quick_sort.c

#include

void

quick_sort

(int arr,

int l,

int r)

if(i < j)

while

(i < j && arr[i]

< temp)

if(i < j)

} arr[i]

= temp;

//i和j相遇後,這個位置即為分割點,左邊的數都小於temp,右邊的數都大於temp。

quick_sort

(arr, l, i -1)

;//遞迴i左右的兩個區間

quick_sort

(arr, i +

1, r);}

}int

main()

;int len =9;

//陣列長度

quick_sort

(arr,

0, len -1)

;//排序的起點下標和終點下標

int i;

for(i =

0; i < len; i++

)return0;

}

本文**執行環境為visual studio community 2019 16.5.0版本。

**內容主要來自上述微軟大佬的文章。

C語言實現快速排序

快速排序,是氣泡排序的改進,通過尋找 中間元素 在一趟排序中,把比 中間元素 小的數放到左邊,比 中間元素 大的數放到右邊,如此遞迴,最終得到排序結果。include define num 5 void quick sort int a,int left,int right void swap in...

c語言實現快速排序

快速排序使用分治法 divide and conquer 策略來把乙個序列 list 分為兩個子串行 sub lists 步驟為 從數列中挑出乙個元素,稱為 基準 pivot 重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面 相同的數可以到任一邊 在這個分割槽結束...

快速排序 C語言實現

以前使用rm時,ruby指令碼提供乙個sort函式,可以把陣列進行排序,後來得知採用的演算法是快速排序。隨著資料結構課程的學習,快速排序如今也不再神秘,如下 using namespace std void quicksort int a,int low,int high int first low...