快速排序主要思想,選取乙個基準,進行一趟排序,調整陣列使基準左邊的數都小於基準,使基準右邊的數都大於基準。然後對於基準劃分的兩個子陣列依次進行遞迴劃分調整。
1.遞迴版本
public static void quicksort(int arr, int lo, int hi)
//演算法導論版本
// lo---i----j----hi
//lo--i之間存放小於r i---j存放等於r的值 j---hi存放大於r
private static int partition(int arr, int lo, int hi)
if(q+1low)
if(qq+1非遞迴主要利用棧來儲存需要遞迴劃分的數字座標
3.partition函式的其他實現方式
選取最小數作為基準r,維護兩個指標,分別找到左邊第乙個比r小的數 右邊第乙個比r大的數,交換位置。最後調整基準位置。
//演算法第四版
private static int partition2(int arr, int lo, int hi)
swap(arr, lo, j);
return j;
}
private static int partition3(int arr, int low, int high)
arr[low] = pivot; //最後樞紐元放到low的位置
return low;
}
快速排序時間複雜度平均o(nlogn),當陣列基本有序時,時間複雜度變為o(n2); 快速排序實現(遞迴 非遞迴)
首先是劃分演算法,假設每次都以第乙個元素作為樞軸值,進行一趟劃分 int partition int a,int low,int high a low pivot 將樞軸值元素置於最終位置 return low 第乙個while迴圈裡的 還可以採用如下形式 while low high a high...
快速排序 遞迴和非遞迴的實現
快速排序主要就是partition的操作。遞迴的實現。a 要排序的陣列,s 開始位置,e 結束位置 void quicksort int arr,int s,int e 普通劃分操作。以最後乙個元素 arr e 作為基準 intpartition int arr,int s,int e swap a...
遞迴和非遞迴快速排序 Python實現
快速排序的原理是基於分治策略,設定乙個基準線 pivot 將資料分為兩部分,不斷分治實現資料的排序 由實現原理容易得到遞迴 如下 def qsort arr ifnot len arr return else 在這裡以第乙個元素為基準線 pivot arr 0 left qsort x for x ...