java快排
package sort; /* * 快排: * 1,以数组中的一个数为坐标点,比坐标点大的数放在右边,小的放在坐标。 * 2,不断递归1,直到不能递归。 */ public class QuickSort { public static void main(String[] args) { int[] arr = {5,6,4,1,7,3,2,9}; QuickSort quickSort = new QuickSort(); quickSort.qsort(arr,0,arr.length-1); for(int i = 0;i<arr.length;i++) { System.out.print(arr[i]); } } public void qsort(int[] arrs,int begin,int end) { if(begin>=end||arrs==null) return; int position = position(arrs,begin,end); qsort(arrs,begin,position-1); qsort(arrs,position+1,end); } //重数组的最左边和最右边开始遍历,与坐标点的值进行对比,将数组变成为坐标点的左边比右边小的数组。 public int position(int[] arrs,int begin,int end) { int first = arrs[begin]; int i = begin; int j = end; while(i<j) { while(first>=arrs[i]&&i<end) i++; while(first<arrs[j]&&j>begin) j--; if(i<j) { arrs[i] = arrs[i]+arrs[j]; arrs[j] = arrs[i]-arrs[j]; arrs[i] =arrs[i]-arrs[j]; } } //最后移动坐标点 if(j !=begin) { arrs[begin] = arrs[j]; arrs[j] = first; } return j; } }