您好,登錄后才能下訂單哦!
這篇文章給大家介紹java中怎么實(shí)現(xiàn)快速排序,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
選擇一個關(guān)鍵值作為基準(zhǔn)值。比基準(zhǔn)值小的都在左邊序列(一般是無序的),比基準(zhǔn)值大的都在右邊(一般是無序的)。一般選擇序列的第一個元素。
一次循環(huán):從后往前比較,用基準(zhǔn)值和最后一個值比較,如果比基準(zhǔn)值小的交換位置,如果沒有繼續(xù)比較下一個,直到找到第一個比基準(zhǔn)值小的值才交換。找到這個值之后,又從前往后開始比較,如果有比基準(zhǔn)值大的,交換位置,如果沒有繼續(xù)比較下一個,直到找到第一個比基準(zhǔn)值大的值才交換。直到從前往后的比較索引>從后往前比較的索引,結(jié)束第一次循環(huán),此時,對于基準(zhǔn)值來說,左右兩邊就是有序的了。重復(fù)上述循環(huán)。
public class maxtest { public static void main(String[] args) { //###################快速排序法start###################//int[] state = {2,13,7,6,15,9,10,12,3,16,8,11,14,5,1}; int start = 0; int end = state.length-1; System.out.print("初始值:"); for (int i = 0; i < state.length; i++) { System.out.print(state[i]+","); } System.out.println(""); sort(state,start,end); //###################快速排序法end###################// } public static int partition(int []array,int lo,int hi){//固定的切分方式int key=array[lo];while(lo<hi){while(array[hi]>=key&&hi>lo){//從后半部分向前掃描hi--; } array[lo]=array[hi];while(array[lo]<=key&&hi>lo){ lo++; } array[hi]=array[lo]; } System.out.println(""); for (int i = 0; i < array.length; i++) { System.out.print(array[i]+","); } array[hi]=key;return hi; } public static void sort(int[] array,int lo ,int hi){if(lo>=hi){return ; }int index=partition(array,lo,hi); sort(array,lo,index-1); sort(array,index+1,hi); } }
結(jié)果如下:
初始值:2,13,7,6,15,9,10,12,3,16,8,11,14,5,1,1,13,7,6,15,9,10,12,3,16,8,11,14,5,13,1,2,5,6,3,9,10,12,9,16,8,11,14,15,13,1,2,3,6,6,7,10,12,9,16,8,11,14,15,13,1,2,3,5,6,7,8,9,9,16,12,11,14,15,13,1,2,3,5,6,7,8,9,10,16,12,11,14,15,13,1,2,3,5,6,7,8,9,10,13,12,11,14,15,13,1,2,3,5,6,7,8,9,10,11,12,11,14,15,16,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,
圖列如下:
關(guān)于java中怎么實(shí)現(xiàn)快速排序就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。