排序算法

快速排序算法:

通过一次排序将数组分为独立的两部分,一部分均比关键字小,另一部分均比关键字大,再递归对每部分进行关键字排序。

关键字排序:把数组第一个数拿出来做关键字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 }

 

posted @ 2017-05-05 20:16  lulushow  阅读(113)  评论(0编辑  收藏  举报