/** * 用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它左边,所有比它大的数都放到它右边,这个过程称为一趟快速排序。 * * @param args */ public static void main(String[] args) { int[] array={49,38,65,97,76,13,27,50,78,34,12,64,1}; myFirstQuickSort(array,0,array.length-1); System.out.println("排序之后:"); for(int i=0;i<array.length;i++){ System.out.print(array[i]+" "); } System.out.println(); } public static void myFirstQuickSort(int[] array,int low,int hight){ int key=array[low]; int axis = low; int original_low = low; int original_hight = hight; while (low<hight){ while (low<hight && key<array[hight]){ hight--; } if(low<hight){ array[low]=array[hight]; axis = hight; low++; } while (low<hight && key>array[low]){ low++; } if(low<hight){ array[hight]=array[low]; axis = low; hight--; } } array[axis]=key; if (original_hight - axis > 1){ myFirstQuickSort(array,axis + 1, hight); } if (axis - original_low > 1){ myFirstQuickSort(array,low, axis - 1); } }
快速排序详解
于 2020-01-02 10:33:15 首次发布