快速排序的實現

2021-08-25 13:27:31 字數 1030 閱讀 6512

先寫**,一會再總結

public class testquicksort ;

for (int x : array)

system.out.println();

quicksort(array, 0, array.length - 1);

for (int x : array)

}// 對分割元素左右段陣列進行遞迴快排,直到左右陣列只剩下1個元素為止,left代表陣列的起始座標,right代表陣列的終點座標

public static void quicksort(comparable array, int left, int right)

}// 尋找並返回分割元素座標

public static int findpartition(comparable array, int left, int right)

if (i < j)

// 從左向右搜尋第乙個大於分割元素的元素,找到後交換兩者的位置

while (i < j && array[i].comparato(partitionelement <= 0)

if (i < j) }}

}

總結出的幾個問題:

1.快排有兩種實現方法:

(1)第一種如我的**所示,從右向左找(從右想做找)的跳出條件為(i < j),並且在找到元素後立即與分割元素交換位置.看這一步

//  從右向左搜尋第乙個小於分割元素的元素,找到後交換兩者的位置

while (i < j && array[j].compareto(partitionelement >= 0)

if (i < j)

(2)第二種是從右向左找(從右想做找)的跳出條件為(i < right) right為陣列邊界,並且找到元素後不和分割元素交換值,而是交換左右兩個找到的值.具體實現略過

2.我這種方法只能先從右往左找第乙個小於分割元素的元素

不能先從左往右找第乙個大於分割元素的元素

快速排序 轉 快速排序的實現

總的說來,要直接默寫出快速排序還是有一定難度的,因為本人就自己的理解對快速排序作了下白話解釋,希望對大家理解有幫助,達到快速排序,快速搞定。快速排序是c.r.a.hoare於1962年提出的一種劃分交換排序。它採用了一種分治的策略,通常稱其為分治法 divide and conquermethod ...

快速排序的實現

一般我們在對資料進行排序時都採用氣泡排序法,然而氣泡排序演算法中在對資料進行遍歷一遍時,只能排序乙個資料到正確的位置上去,其演算法的時間複雜度為o n 2 該演算法的效率比較低,而快速排序演算法是在氣泡排序的基礎上提出的快速排序由c.a.r.hoare在1962年提出。它的基本思想是 1 在一組比較...

快速排序的實現

快速排序是一種常用的排序演算法,其時間複雜度是o nlogn c 自帶快排函式sort 其實現和這裡的快排類似但又不完全相同 快速排序演算法思想 先在待排序的陣列a中任意找乙個資料x,最好取中間的數a l r 2 其中l是最小下標,r是最大下標。找到這個資料後再採用雙指標 其實是兩個用來標記陣列下標...