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]