快速排序是一種基於分治思想的演算法。它的基本思想如下:
首先選取乙個軸/基準(pivot),接著根據選取的軸進行分割槽操作(partition),分割槽操作的結果是使待排序序列中小於軸值的元素全部位於軸的左邊,大於軸值的元素全部位於軸的右邊;這樣就將整個序列分成了兩個子串行,而軸值已經位於正確的位置.然後對軸左右兩邊的子串行分別遞迴地進行快速排序,最終得到乙個有序的序列。
主要偽**如下:
voidqsort(elementtype *p,
intlow,
inthigh)
}int
partition(elementtype *p,
intlow,
inthigh)
//return
low;
//返回軸所在的位置
}
演算法的平均時間複雜度:o(n logn),最壞情況下是:o(n
排序演算法小記
include 氣泡排序,適合於資料量較小的情況,效率較低 最好的時間複雜度為o n 最壞時間複雜度為o n n 平均時間複雜度為o n n void bubble sort int a,int len 交換排序 void swapsort int a,int length 快速排序 void qu...
遞迴 快速排序 快速排序
問題描述 用遞迴來實現快速排序 quick sort 演算法。快速排序演算法的基本思路是 假設要對乙個陣列a進行排序,且a 0 x。首先對陣列中的元素進行調整,使x放在正確的位置上。同時,所有比x小的數都位於它的左邊,所有比x大的數都位於它的右邊。然後對於左 右兩段區域,遞迴地呼叫快速排序演算法來進...
排序 快速排序
快速排序時實踐中最快的一直排序,平均時間是0 nlogn 最壞的情況是o n2 但是很容易將這種情況避免 空間複雜度 o n lgn 不穩定。快速排序時基於分治模式處理的,對乙個典型子陣列a p.r 排序的分治過程為三個步驟 1.分解 a p.r 被劃分為倆個 可能空 的子陣列a p q 1 和a ...