文章

2

粉丝

0

获赞

0

访问

991

头像
2013年计算机学科专业基础综合试题 - 第41题回答
数据结构
发布于2025年9月26日 22:06
阅读数 450

/*
分析
1.因为是顺序表,所以可以考虑排序。
2.当数组中重复元素出现的次数超过n/2时,作为主元素。
3.所以可以先排序,然后定位到n/2位置。
4.从该位置往左计数,往右计数。
5.最后判断计数值是否大于n/2。
*/
int process(){//这个函数用来找主元素
    int result = -1;//如果没找到返回-1
    int A[n];//存放整数序列
    int L,R;//分别记录A数组的第一个下标和最后一个下标
    int X = A[n/2];//主元素的值
    int count =0;//存储计数值
    Q_sort(A,L,R);//进行快速排序
    for(int i = n/2;i>=0;i--){//从主元素的位置开始从右往左找
        if(X==A[i])count++;
    }
    for(int i = n/2+1;i<n;i++){//从主元素后一个位置开始左往右找
        if(X==A[i])count++;
    }
    if(count>n/2)printf("%d",X);
    else return result;
}
//编写快速排序算法
int partion(int A[],int L,int R){
    int mid = A[L];//选取数组第一个元素作为枢轴
    while(L<R){
        while(A[R]>=mid&&L>R)R--;
        A[L] = A[R];
        ...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发