快速排序(quick sort)
把0索引数字作为基准数,确定基准数在数组中的位置比基准小的在左边,比基准大的在右边,后面以此类推(从小到大排序)
public static void quicksort(int [] arrmy,int i,int j) { int start=i;int end=j; int basenumber=arrmy[i];//确认基数 if(start>=end) { return ; } while(start!=end){ while(true) { if(end<=start||arrmy[end]<basenumber)//指针遇到比基数小的停下 { break; } end--; } while(true) { if(end<=start||arrmy[start]>basenumber)//指针遇到比基数大的停下 { break; } start++; } //交换左右指针数组 int temp=arrmy[start]; arrmy[start]=arrmy[end]; arrmy[end]=temp; } //交换基数 int temp=arrmy[i]; arrmy[i]=arrmy[end]; arrmy[end]=temp; //递归调用使基数两边数组快排 quicksort(arrmy,i,start-1); quicksort(arrmy,start+1,j); } }
快排效率很高,一定记住先找后面为了防止基准数换错 导致换成大的在前面。