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