基本排序算法——快速排序java实现
简单的快速排序算法,我竟然花费了如此多的时间来写作,好好学习。
1 /** 2 * 3 */ 4 package basic.sort; 5 6 import java.util.Arrays; 7 import java.util.Random; 8 9 public class QuickSort { 10 11 12 public static <AnyType extends Comparable<? super AnyType>> 13 void quickSort(AnyType[] arr){ 14 if(arr == null || arr.length ==0){ 15 return ; 16 } 17 AnyType key = arr[0]; 18 int low = 0,high =arr.length -1; 19 while(low < high){ 20 while(arr[high].compareTo(key) > 0 && high > 0){ 21 --high ; 22 } 23 while(arr[low].compareTo(key) <= 0 && low < arr.length-1){ 24 ++low; 25 } 26 if(low < high){ 27 AnyType tmp = arr[low]; 28 arr[low] = arr[high]; 29 arr[high] = tmp; 30 } 31 } 32 arr[0] = arr[high]; 33 arr[high] = key; 34 35 //println(Arrays.toString(arr)); 36 37 quickSort(arr, 0 ,high-1); 38 quickSort(arr,high+1,arr.length-1); 39 } 40 41 public static <AnyType extends Comparable<? super AnyType>> 42 void quickSort(AnyType[] arr, int l,int h){ 43 if(arr == null || arr.length ==0 44 || l >= h){ 45 return ; 46 } 47 AnyType key = arr[l]; 48 int low = l+1; 49 int high = h; 50 51 while(low < high){ 52 while(arr[high].compareTo(key) > 0 && high > l ){ 53 --high ; 54 } 55 while(arr[low].compareTo(key) < 0 && low < h){ 56 ++low; 57 } 58 if(low < high){ 59 AnyType tmp = arr[low]; 60 arr[low] = arr[high]; 61 arr[high] = tmp; 62 } 63 } 64 arr[l] = arr[high]; 65 arr[high] = key; 66 67 quickSort(arr, l ,high-1); 68 quickSort(arr,high+1,h); 69 } 70 71 72 73 public static void main(String[] args) { 74 Random rand = new Random(); 75 Integer[] arr = new Integer[10]; 76 for(int i = 0 ;i <10 ;i++){ 77 arr[i] = rand.nextInt(1000); 78 } 79 println(Arrays.toString(arr)); 80 quickSort(arr); 81 println(Arrays.toString(arr)); 82 } 83 84 public static void println(String str){ 85 System.out.println(str); 86 } 87 88 }
认真努力
雨,静静的飘扬;
心,慢慢的行走;
程序人生,人生迈进。