java实现快速排序

 1 package com.wangjj.quicksort;
 2 
 3 import java.util.Arrays;
 4 
 5 /**
 6  * 快速排序
 7  * @author Administrator
 8  *
 9  */
10 public class QuickSort
11 {
12     public static void sort(int arr[],int low,int high)
13     {
14         int l = low;
15         int h = high;
16         int key = arr[low];
17         //进行一趟快速排序,排序完结果,key左边的都比key小,key右边的都比key大
18         while(l<h)
19         {
20             //数组从右往左进行
21             for(;l<h;h--)
22             {
23                 //判断,发现比key小的进行交换,结束循环
24                 if(key>arr[h])
25                 {
26                     //交换
27                     arr[l] = arr[h];
28                     arr[h] = key;
29                     break;
30                 }
31             }
32             //数组从左往右进行
33             for(;l<h;l++)
34             {
35                 //判断,发现比key大的进行交换,结束循环
36                 if(key<arr[l])
37                 {
38                     //交换
39                     arr[h] = arr[l];
40                     arr[l] = key;
41                     break;
42                 }
43             }
44         }
45         //进行递归,递归结束条件为数组只有一个元素
46         if(l>low)
47         {
48             sort(arr,low,l-1);
49         }
50         if(h<high)
51         {
52             sort(arr,h+1,high);
53         }
54     }
55     
56     public static void main(String[] args)
57     {
58         int[] arr ={9,8,7,6,5,4,4,3,2,1};
59         sort(arr,0,9);
60         System.out.println(Arrays.toString(arr));
61     }
62 }

输出内容:[1, 2, 3, 4, 4, 5, 6, 7, 8, 9]

 

posted @ 2016-10-14 17:19  不自然地坚持  阅读(196)  评论(0编辑  收藏  举报