快排的原则就是选一个标准,然后每一个数据和这个标准对比,比这个标准大的放在左边,比这个标准小的放在右边。
看代码:
package com.logan.Algo; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub int [] array = {9,1,7,3,6,2,10,4}; int n = array.length; QuickSort(array, 0, n-1); for(int i=0;i<n;i++) { System.out.println(array[i]); } } private static void QuickSort(int[] num, int left, int right) { // 如果left=right,即数组中只剩一个元素时,直接返回 if(left>=right) { return; } // 设置最左边的元素为基准值 int key = num[left]; //数组中比key小的放在左边,比key大的放在右边 int i = left; int j = right; while(i<j) { //j向左移动,直到碰到比key小的数 while(num[j]>=key && i<j) { j--; } //i向右移动,直到碰到比key大的数 while(num[i]<=key && i<j) { i++; } //i和j指向的元素交换 if(i<j) { int temp = num[i]; num[i] = num[j]; num[j] = temp; } } num[left] = num[i]; num[i] = key; QuickSort(num, left, i-1); QuickSort(num, i+1, right); } }