思路:分為交換和遞迴。
交換:從右往左:如果值》=當前值,則跳過
從左往右:如果值<=當前值,則跳過
基準數: int temp= arr[left];
遞迴:方法:
quicksort(arr,left,i-1);
quicksort(arr,i+1,right);
遞迴出口
if(left>=right);
public static void quicksort(int arr,int left,int right)
int i = left;
int j = right;
int temp = arr[i];//基準數
//左右互換
while(i!=j)
//互換
if(i}
//重新選擇基準數
arr[left]= arr[i];
arr[i]= temp;
quicksort(arr,left,i-1);
quicksort(arr,i+1,right);
}
30 排序 快速排序
排序也是我們經常用到的一種演算法,之前我們遇到的有氣泡排序,選擇排序等。那麼我們就開始主要梳理一下排序演算法,並且重點理解出現頻率比較高的快速排序的方法。推薦看這個人的部落格,非常的詳細了。快速排序 適用場景 資料量大,快速排序是目前基於比較的排序中被認為是最好的方法,當待排序的關鍵字是隨機分布時,...
05 排序 快速排序
原理 整個過程其實只需三步 1.在一列陣列中,選擇其中乙個資料作為 基準 2.所有小於 基準 的資料,都移到 基準 的左邊,所有大於 基準 的資料,都移到 基準 的右邊。3.對於 基準 左邊和右邊的兩個子集,不斷重複第一步和第二步。直到所有的資料子集只剩下乙個資料為止。用例 現有一組資料如下 8 2...
2 排序演算法 快速排序
問題描述 利用快速排序演算法對下列例項排序,在演算法執行過程中,寫出陣列 a第一次排序後被分割的過程。a 65,70,75,80,85,55,50,2 解題思想 在快速排序中,記錄的比較和交換是從兩端向中間進行的,關鍵字較大的記錄一次就能交換到後面的單元,總的比較和移動次數較少。對於輸入的陣列a p...