java快速排序

来源:互联网 发布:2017网络效应判断题 编辑:程序博客网 时间:2024/06/01 07:16

关键点:

1.找出一个关键字

2.根据关键字为基准点,对待排序的数组进行分离 左侧 小于关键字 由此 大于关键字

3.递归排序 (将左边的进行排序 再将右边的进行排序)


public class QuickSort{public static void main(String[] args) {long [] nums = new  long[10];for(int i = 0 ; i < 10 ;i++){nums[i]  = (long) (Math.random() * 100);}QuickSortSolution.showArr(nums);QuickSortSolution.sort(nums,0,nums.length - 1);QuickSortSolution.showArr(nums);}}class QuickSortSolution{public static void showArr(long [] nums){for(long val : nums){System.out.print(val+"\t");}System.out.println("\n");}//partition array not orderpublic static int partition(long [] nums , int left , int right, long point){int leftPtr = left - 1;int rightPtr = right;while(true){// left pointer moves to the right. find nums[++leftPtr]> point -> while stopwhile(leftPtr < rightPtr && nums[++leftPtr] < point);// right pointer moves to the left. find nums[--rightPtr] < point -> while stopwhile(leftPtr < rightPtr && nums[--rightPtr] > point);// two while all stop  operation swap if(leftPtr >= rightPtr){break;}else{long temp = nums[leftPtr];nums[leftPtr] = nums[rightPtr];nums[rightPtr] = temp;}}//long temp = nums[leftPtr];nums[leftPtr] = nums[right];nums[right] = temp;return leftPtr;}public static void sort(long [] nums , int left , int right){if(right - left <= 0){return;}long point = nums[right];//partitionint partition = partition(nums, left , right, point);//for left sortsort(nums,left,partition - 1);//for right sortsort(nums,partition + 1,right);}}


0 0