2020考研数据结构 408算法2013年真题

2020考研数据结构 408算法2013年真题_第1张图片


1.

第一步,现将首元素设为标记位flag,次数出现最多的元素设为maxELem,初始flag=数组首元素,flag将标记位一个一个的与数组每个元素比较,若相等,count++,

第二步,将数组的第二个元素设为标记位,依次循环标记

第三部,若第二次的比第一次的count大,将最大的次数count设为最多位数,在循环时就比较,同时将maxElem等于循环时的元素

第四部,函数返回最多出现的次数,如果次数大于数组长度一半时,函数返回最多元素maxElem,否则返回-1


#include
#define maxSize 100

typedef struct Sqlist{
	int data[maxSize];
	int length;
}Sqlist;
int find(Sqlist &L){
	int flag,count,min=0,zuiduo=0;
	int arr[L.length];
	for(int i=0;imin)
		{
			min=count;
			zuiduo=L.data[i]; 
		} 
	 
	}
     if(min>(L.length/2))
		return zuiduo;
	else
		return -1;
}

int initSqlist(Sqlist &L){
	int n;
	 printf("顺序表要输入的个数:");
	 scanf("%d",&n);
	 printf("\n");
	 L.length=n;
	 for(int i=0;i

3.时间复杂度:O(n^2)

空间复杂度,O(n)

此解不是最优解,但是按考研的思路走,时间复杂度O(nlog2n)可以拿11分,我写的O(n^2)虽然不是最优解,也可拿10分。性价比非常高!!!!

 

你可能感兴趣的:(2020考研数据结构 408算法2013年真题)