最开始写快速排序花了不少时间,其实关于排序算法,最重要的是首先你要理解,各种排序算法的原理是什么,当你理解了具体的实现原理再来写程序的时候你就会觉得很轻松了。不多说,直接上代码:
package Algorithm.sort; /** * 快速排序的实现 * @author zhoudafu * */ public class QuickSort { public void quickSort(int[] a,int low,int high){ int i = low; int j = high; int key = a[low]; //分治递归结束判断 if(i == j){ return; } while(true){ while(i<j){ if(a[j]<key){ int temp = a[j]; a[j] = a[i];//注意不是和key互换,而是和a[i]a[j]比较互换 a[i] = temp; break;//重要,当交换完为止后结束本次while循环 }else{ j--; } } while(i<j){ if(a[i]>key){ int temp = a[i]; a[i] = a[j]; a[j] = temp; break;//重要,当交换完为止结束本次while循环 }else{ i++; } } if(i == j){ break;//此时跳出while(true)循环 } } //递归分治 quickSort(a,low,i-1); quickSort(a,i+1,high); } public static void main(String[] args) { int a[] = {49,38,65,97,76,13,27}; QuickSort qs = new QuickSort(); qs.quickSort(a, 0, a.length-1); for (int i = 0; i < a.length; i++) { System.out.print( a[i] + " "); } } }