码迷,mamicode.com
首页 > 其他好文 > 详细

关于快速排序的一些理解

时间:2014-09-07 12:13:45      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   使用   ar   for   art   div   

 1 public class QuickSort {
 2     
 3     public  void sort(int[] k,int low,int high)
 4     {
 5         int point;
 6         if(low<high)   //这里要主要不要写成了while
 7         {
 8             point=Partition(k,low,high); //获取中间点并把数组一分为二
 9             sort(k,low,point-1);         //对小于Point的左边数组进行递归
10             sort(k,point+1,high);        //对大于Point的右边数组进行递归
11         }
12     }
13     /*
14      * 
15      * 该函数实现获取中间轴点的功能*/
16     public  int Partition(int[] k,int low,int high)
17     {
18         int point;
19         point=k[low];//以数组的第一个值作为中轴
20         while(low<high)
21         {
22             while(low<high &&k[high]>=point)  //当右边的值比中轴值大时,不进行交换,右边的数组向左移动一位
23             {
24                 high--;
25             }
26             k[low]=k[high];//当右边的值比当前值小,进行交换
27             while(low<high &&k[low]<=point)
28             {
29                 low++;
30             }
31             k[high]=k[low];//当左边的值比当前值大,进行交换
32             
33         }
34         k[low]=point; //把中间值放到数组的中间位置
35         return low;  //返回中间值的位置
36     }
37 
38     public static void main(String[] args) {
39         // TODO Auto-generated method stub
40         QuickSort sort = new QuickSort();
41         int[] A ={5,7,2,9,8,6,1,3,4,0};
42         System.out.println("排序前的顺序:");
43         for (int i : A) {
44             System.out.print(i+" ");
45         }
46         sort.sort(A,0,A.length-1);
47         System.out.println();
48         System.out.println("使用快速排序后的顺序为");
49         for (int i : A) {
50             System.out.print(i+" ");
51         }
52         
53         
54     }
55 
56 }

 

关于快速排序的一些理解

标签:style   blog   color   io   使用   ar   for   art   div   

原文地址:http://www.cnblogs.com/luoweiKnowledge/p/3960281.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!