/*快速排序
以第乙個數為基準點,把大於基準點的放在基準點右邊,小於基準點的放在基準點左邊。
再把左邊的當作乙個新的陣列1,右邊的當作乙個新陣列2,分別重新選取新的陣列1,2的基準點不斷執行小於基準點的放左邊,大於基準點的放右邊
不斷劃分左右陣列序列,直到左右陣列序列只剩乙個數
實現方法:
定義兩個哨兵i,j,j每次先從後往前找到第乙個小於基準點的數,如果此時i,j,沒有相遇,i在 j找到數後從前往後找到第乙個大於基準點的數
不斷 重複該過程,直到i,j相遇,相遇點即為基準點應該所處的位置
把基準點前後各劃分為乙個新的陣列後重複1,2過程,直到形成的陣列只有乙個數*/
public static void quicksort(int a,int low,int high)
int i,j,key;
i=low;
j=high;
key=a[low];
while(i=key)
while(i=high) return;
int p=getpartionvalue(nums,low,high);
quicksortrecursion(nums,low,p-1);
quicksortrecursion(nums,p+1,high);
}public int getpartionvalue(int nums,int low,int high)
return -1;
}public int getpartionvalue(int nums,int low,int high)else*/
if(nums[j]<=nums[high])
swap(nums,i++,j);
}swap(nums,i,j);
return i;
}
資料結構排序演算法之快速排序
快速排序 includeusing namespace std void swap int arr,int i,int j void quicksort int arr,int left,int right arr i temp quicksort arr,left,i 1 quicksort ar...
資料結構課設 排序演算法之 簡單快速排序和氣泡排序
1 是一種運用遞迴思想並且應用交換作為工具的一種排序演算法。2 時間複雜度在不同的情況下不同,最好情況nlog n 最差情況n 2。一般平均的情況下為nlog n u.txt 中的範例5 3 1 4 9 2 includeusing namespace std void qsort int a,in...
資料結構之排序演算法 快速排序 java
5快速排序 快排 public class quicksort partition a,0,a.length 1 print a test public void testquicksort quicksort a,0,a.length 1 print a public void quicksort...