检查数组中超过一半的数字

    xiaoxiao2021-03-25  73

    bool g_bInputInvalid=false; bool CheckInvalidArray(int* numbers,int length){//检查是否有效输入 g_bInputInvalid=false; if(numbers==null&&length<=0) g_bInputInvalid=true; return g_bInputInvalid; } bool CheckMoreThanHalf(int* numers,int length,int number){ int times=0; for(int i=0;i<length;i++){ if(numbers[i]=number) times++; } bool isMoreThanHalf=true; if(times*2<=length){ isMoreThanHalf=false; g_bInputInvalid=true; } return isMoreThanHalf; } int MoreThanHalfNum(int* numbers,int length){//检查是否超过一半 if(CheckInvalidArray(numbers,length)) return 0; int middle=length>>1; int start=0; int end=length-1; int index=partition(numbers,length,start,end);//partition是快速排序算法 while(index!=middle){ if(index>middle) end=index-1; index=partition(numbers,length,start,end); else{ start=index+1; index=partition(numbers,length,start,end); } } int result=numbers[middle]; if(!CheckMoreThanHalf(numbers,length,result)){ result=0; } return result; }
    转载请注明原文地址: https://ju.6miu.com/read-32449.html

    最新回复(0)