package base; /** * Created by shanks on 18/4/18. * 得到中位数O(N) */ public class Median { public static int getMedian(int []nums){ if(nums.length==0) return 0; int start=0; int end=nums.length-1; int index=partition(nums, start, end); int k=0; if(nums.length%2==0){ k=1; } while(index!=nums.length/2-k){ if(index>nums.length/2-k){ index=partition(nums, start, index-1); }else{ index=partition(nums, index+1, end); } } return nums[index]; } private static int partition(int nums[], int start, int end){ int left=start; int right=end; int pivot=nums[left]; while(left<right){ while(left<right&&nums[right]>=pivot){ right--; } if(left<right){ nums[left]=nums[right]; left++; } while(left<right&&nums[left]<=pivot){ left++; } if(left<right){ nums[right]=nums[left]; right--; } } nums[left]=pivot; return left; } public static void main(String[] args){ int[] a={1,8,7,2,5}; System.out.println(getMedian(a)); } }
寻找中位数
最新推荐文章于 2020-08-17 22:11:55 发布