回忆数组快速排序算法
先回忆一下快速排序算法的本质:快速排序是冒泡排序的改进,第一次排序是将一个枢轴元素(通常指定为第一个元素)插入到数组中合适的位置,使得枢轴左边的元素都小于枢轴,右边的元素都大于枢轴,这样原来的数组就切分成两个相对有序的数组,再对其进行快速排序。
具体做法:附设两个指针low,high,枢轴元素为第一个元素
首先从high开始,找到第一个小于枢轴的元素,将该元素与枢轴互换,然后从low的位置起向后搜索,找到第一个大于枢轴的元素,将该元素与枢轴互换,重复进行直到low==high。
static int array[] ={48,20,27,85,79,98,45}; public static void main(String[] args){ System.out.println("排序以前的数组:"); printArray(); System.out.println("排序后的数组:"); quickSort(0,array.length-1); printArray(); } private static void quickSort(int low ,int high) { if(low<high){ int index =partition(low,high); quickSort(low, index-1); quickSort(index+1, high); } } private static int partition(int low, int high) { int temp =array[low]; while(low<high){ while(low<high&&array[high]>=temp){ high--; } array[low] =array[high]; while(low<high&&array[low]<=temp){ low++; } array[high]=array[low]; } array[low]=temp; return low; } private static void printArray() { for(int i:array){ System.out.print(i+" "); } System.out.println(); }