快速排序
对于快速排序算法,个人理解是选择其中的一个数m作为基准,然后进行一次扫描,其目的是将所有比m小的数放在m左边,将所有比m大的数放在m右边。然后再利用分治的思想进行递归。也有人称之为“挖坑填数法”,下面给出的算法是将数组中第一个作为基准。
1 public class Test { 2 private static void qsort(int[] arr, int low, int high){ 3 if (low < high){ 4 int temp = partition(arr, low, high); 5 qsort(arr, low, temp-1); 6 qsort(arr, temp+1, high); 7 } 8 } 9 10 private static int partition(int[] arr, int low, int high){ 11 int temp = arr[low]; 12 while (low < high){ 13 while (low < high && arr[high] >= temp) { 14 high--; 15 } 16 arr[low]=arr[high]; 17 while (low<high && arr[low] < temp) { 18 low++; 19 } 20 arr[high] = arr[low]; 21 } 22 arr[low] = temp; 23 return low; 24 } 25 26 public static void main(String[] args) { 27 Random random = new Random(); 28 int [] arr = new int[10]; 29 for (int i = 0; i < 10; i++) { 30 arr[i] = random.nextInt(100) + 1; 31 } 32 qsort(arr, 0, arr.length - 1); 33 for (int i = 0; i < arr.length; i++) { 34 System.out.println(arr[i]); 35 } 36 } 37 }
just a coder