/** * Created by Administrator on 2017/4/8. * 快速排序 */ public class FastSort { public void sort1(int[] ss,int begin,int end) { if (begin < end) { //很容易被忽视的前提条件,如果没有这个条件,会出现堆栈溢出 int i = begin, j = end; int temp = ss[begin]; while (i < j) { while (i < j && ss[j] > temp) { j--; } if (i < j) { ss[i] = ss[j]; ss[j]=temp; i++; } while (i < j && ss[i] < temp) { i++; } if (i < j) { ss[i] = ss[j]; ss[j]=temp; j--; } } ss[i] = temp; sort1(ss,begin,i-1); sort1(ss,i+1,end); } } public static void main(String[] args) { FastSort fs=new FastSort(); int ss[]={78,45,23,45,56,89,85}; fs.sort1(ss,0,ss.length-1); for(int i=0;i<ss.length;i++){ System.out.print(ss[i]+" "); } } }
注意每个路径的可能性,如果不确定,那就把每个可能性都画成图画出来