排序 快速排序

2021-08-15 09:57:53 字數 821 閱讀 1103

分解:將輸入的序列l【p..r】劃分為倆個非空子序列l【p..q】和l【q+1..r】,且使l【p..q】中

任乙個元素值不大於l【q+1..r】中任一元素。

遞迴求解:

通過遞迴呼叫快速排序演算法分別對l【p..q】和l【q+1..r】進行排序

合併:將排序後的l【p..q】和l【q+1..r】合併到一起就是結果

快速排序的**

package sort;

/** * 快速排序法

*@author 代秀強

* */

public

class

quckily_sort ;

}public

quckily_sort(int a)

//分割槽:i是左邊界,j是右邊界

public

intpartition(int a,int i,int j ,int size)

if(i//從左往右走 查大於m的元素

while(iif(i"\n"+"輸出每次排序的結果");

print();

return i;

}//排序

public

void

quicklysort(int a,int left,int right,int size)

}//遍歷

public

void

print()

}public

static

void

main(string args)

}

排序 快速排序

快速排序時實踐中最快的一直排序,平均時間是0 nlogn 最壞的情況是o n2 但是很容易將這種情況避免 空間複雜度 o n lgn 不穩定。快速排序時基於分治模式處理的,對乙個典型子陣列a p.r 排序的分治過程為三個步驟 1.分解 a p.r 被劃分為倆個 可能空 的子陣列a p q 1 和a ...

排序 快速排序

定義 在快速排序演算法中,使用了分治策略,將要排序的序列分成兩個子串行,然後遞迴地對子序列進行排序,直到整個序列排序完畢。步驟 1.在序列中選擇乙個關鍵元素作為軸 2.對序列進行重新排序,將比軸小的元素移到軸的前邊,比軸大的元素移動到軸的後面。在進行劃分之後,軸便在它最終的位置上 3.遞迴地對兩個子...

排序 快速排序

時間複雜度 快速排序每次將待排序陣列分為兩個部分 1 在理想狀況下,每一次都將待排序陣列劃分成等長兩個部分,則需要logn次劃分。2 在最壞情況下,即陣列已經有序或大致有序的情況下,每次劃分只能減少乙個元素,快速排序將不幸退化為氣泡排序,最壞情況為o n 2 快速排序的平均時間複雜度為o nlogn...