經典排序演算法之快速排序

2021-07-11 16:44:47 字數 716 閱讀 2496

快排的思想是遞迴。一趟下來,比基數小的都在基數的左邊,比基數大的都在基數的右邊,然後分別對基數左邊的數進行遞迴,對右邊的數進行遞迴;當需要遞迴的元素只有乙個時,結束遞迴。

public class quicksort ;

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

for(int a : arr)

}public static void quicksort(int arr, int left, int right)

int s = partition(arr,left,right);

//s的位置是不變的

quicksort(arr, left, s-1);

quicksort(arr, s + 1, right);

}public static int partition(int arr, int left, int right)

//小於等於進入,否則left永遠動不了。左指標找比自己大的

while(left < right && arr[left] <= jizhu)

//把找到的比自己打的和比自己小的交換一下位置

swap(arr, left, right);   

}swap(arr, i, left);

return left;

}public static void swap(int arr, int i, int j)

}

經典排序演算法之快速排序

快速排序就是通過一趟排序將原資料分成兩部分,其中一部分關鍵字都比另一部分小,接下來再對這兩部分分別使用快速排序,這裡有遞迴的思想。快速排序的平均時間複雜度為o nlgn 所以適合資料量較大的情況,但快排需要頻繁的對資料位置的操作,故不適合鏈式儲存資料。function sortquick arr,s...

排序演算法 經典排序演算法之快速排序

快速排序的基本思想是分治法,即按照範圍內的第乙個元素劃分為兩個部分,再歸併排序。整體排序的過程有點類似建立平衡二叉樹的過程。1 假設陣列長度為len,low 0,high len 1。以陣列low為標準,根據和首元素的大小關係將待排序陣列分為兩個部分,返回分組index。2 陣列被劃分為兩部分0到i...

經典演算法之快速排序

說明 快速排序是目前公認最快的排序方法之一。大部分情況都表現得很好,但當必須考慮最壞情況時,快速排序不可接受,因為時間達到o n2 思路 快速排序的基本思想是在數列中找出適當的軸心,將數列分成左右兩部分 左半部分的元素都小於右半部分的元素 然後分別對兩部分進行排序 重複選擇軸心,劃分左右部分的過程 ...