快速排序是c.r.a.hoare於2023年提出的一種劃分交換排序。它採用了一種分治的策略,通常稱其為分治法(divide-and-conquermethod)。
該方法的基本思想是:
1.先從數列中取出乙個數作為基準數。
2.分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。
3.再對左右區間重複第二步,直到各區間只有乙個數。
時間複雜度:o(n*logn)
1. c語言實現
int quicksort(int v, int left, int right)
v[low] = v[high];
while(low < high && v[low] < key)
v[high] = v[low];
}v[low] = key;
quicksort(v,left,low-1);
quicksort(v,low+1,right);
}}
2. python語言實現
def quicksort(list,left,right):
if left < right:
key = list[left]
low = left
high = right
while low < high:
while (low < high ) and list[high] > key:
high = (high -1)
list[low] = list[high]
while (low < high ) and list[low] < key:
low = (low + 1)
list[high] = list[low]
v[low] =key
quicksort(list,left,low-1)
quicksort(list,low+1,right)
資料結構與演算法之快速排序
1.快速排序的 實現如下 include using namespace std template void sort t data,size t head,size t tail templatesize t partition t data,size t head,size t tail tem...
資料結構與演算法 排序演算法之六 快速排序
一 快速排序 排序演算法中的奧斯卡,諾貝爾獎,當屬快速排序!快速排序是20世紀十大演算法之一!1 基本思想 前面提到氣泡排序,它是一種交換排序,堪稱最慢的排序演算法。可是,物極必反,快速排序是氣泡排序的公升級加強版,同屬於交換排序類。以 空間 換時間,快速排序不是相鄰元素的交換,而是加大了比較和交換...
資料結構排序演算法之快速排序
快速排序 includeusing namespace std void swap int arr,int i,int j void quicksort int arr,int left,int right arr i temp quicksort arr,left,i 1 quicksort ar...