1. 程式人生 > >排序算法

排序算法

關鍵字 遞歸 一次 urn 數字 tor fas 排序算法 []

快速排序算法:

通過一次排序將數組分為獨立的兩部分,一部分均比關鍵字小,另一部分均比關鍵字大,再遞歸對每部分進行關鍵字排序。

關鍵字排序:把數組第一個數拿出來做關鍵字key,數組前後分別設置low,hig指針;將key與hig指針的值從後往前比較,如果key<指針hig的值,hig--,反之交換值;key繼續與low指針的值從前往後遍歷,若key>指針low的值,low++,反之交換值;直到完成排序。

 1 public class FastOrder {
 2 
 3     public static void main(String[] args) {
 4         FastOrder p=new
FastOrder(); 5 int[] arr={45,1,6,8,65,26,46,22}; 6 p.fastsort(arr, 0, arr.length-1); 7 for(int i=0;i<arr.length;i++){ 8 System.out.print(arr[i]+" "); 9 } 10 } 11 /*關鍵字key排序*/ 12 public int partition(int[] arr, int low, int hig){ 13 int
key=arr[low];//選數字第一個數為關鍵字 14 while(low<hig){ 15 while(low<hig&&arr[hig]>key){ 16 hig--; 17 } 18 arr[low]=arr[hig]; 19 while(low<hig&&arr[low]<key){ 20 low++; 21 } 22 arr[hig]=arr[low];
23 } 24 arr[low]=key; 25 return low; 26 } 27 /*遞歸完成快速排序*/ 28 public void fastsort(int[] arr,int low, int hig){ 29 if(low<hig){ 30 int mid=partition(arr,low,hig); 31 fastsort(arr, low,mid-1); 32 fastsort(arr,mid+1,hig); 33 } 34 } 35 }

排序算法