找到数组中出现次数超过一半的数字

来源:互联网 发布:js string转timestamp 编辑:程序博客网 时间:2024/05/14 06:46
package test1;/** * 找到数组中出现次数超过一半的数字 * @author yanjie * */public class Test {static int[] data = {1,2,3,2,2,2,5,4,2};public static int partion(int[] data, int low, int high){int temp = data[low];while(low<high){while(low<high && data[high]>=temp)high--;data[low] = data[high];while(low<high && data[low]<=temp)low++;data[high] = data[low];System.out.println(low+" "+high);}data[low] = temp;return low;}public static int bisearch(int[] data, int low, int high, int mid){int par = 0;while(par!=mid){par = partion( data, low, high);if(par==mid){return data[par];}else if(par<mid){low = par+1;}else if(par>mid){high = par-1;}}return 0;}public static void print(int[] data){for(int i: data){System.out.print(i+" ");}}public static void main(String[] args) {// TODO Auto-generated method stubprint(data);int mid = (data.length)/2;int mid_data = bisearch(data, 0, data.length-1, mid);System.out.println(data[mid_data]);}}

0 0
原创粉丝点击