Advertisement

lesson13-1顺序表找主元素(2013统考真题)

阅读量:

题目描述:王道P19 Q12

主元素:在数组中,若某一元素的出现次数达到k次,且数组总长度为n,当k大于n/2时,则该元素被定义为主元素。

思路:

首先将整个数组按照递增顺序进行排列,主元素必定位于中间位置。因此,只需检查处于n/2位置的元素是否满足条件,若该元素即为主元素,则判定为存在,否则则不存在。

代码:

复制代码
 int getMajority(int A[],int n){

    
 	bubbleSort(A,n);
    
 	int median=A[n/2];
    
 	int count=0;//记录中位数个数
    
 	for(int i=0;i<n;i++){
    
 		if(A[i]==median)
    
 			count++;
    
 	}
    
 	if(count>n/2)
    
 		return median;//中位数就是主元素
    
 	else
    
 		return -1;
    
 }
    
  
    
 void bubbleSort(int A[],int n){
    
 	int flag;
    
 	for(int i=n-1;i>=1;i--){
    
 		flag=0;
    
 		for(int j=1;j<=i;j++){

全部评论 (0)

还没有任何评论哟~