⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zhongshu.c

📁 这是另外一个众数的代码。大家可以对比的参考一下看一下。
💻 C
字号:
#include "stdio.h"
#define MAXSIZE 15

typedef struct {
int key;
} NodeType;


typedef struct {
NodeType r[MAXSIZE + 1];
int length;
} SqList;



int Partition(SqList *L,int p,int r)
{
	int i=p;int j=r+1;int t;
	int x=L->r[p].key;
	while(1)
	{while(L->r[++i].key<x&&i<r);
		while(L->r[--j].key>x);
		if(i>=j)break;
		t=L->r[i].key;
		L->r[i].key=L->r[j].key;
		L->r[j].key=t;
		
	}
	L->r[p].key=L->r[j].key;
	L->r[j].key=x;
	return j;
}

void QuickSort(SqList *L,int p,int r)
{int  q;
	if(p<r)
	{
		q=Partition(L,p,r);
		QuickSort(L,p,q-1);
		QuickSort(L,q+1,r);
	}
}



int median(SqList *L,int a,int b)
{  
   int med;
  if((a+b)%2==0)
    med=(a+b)/2;
  else 
  med=(a+b-1)/2;
     return med;
    
}

int L1(SqList *L,int med)
{
while(med>=1&&med<=L->length)
{  if(L->r[med].key==L->r[med-1].key)
       med--;
     else
   return med-1;
}
}

int R1(SqList *L,int med)
{
while(med>=1&&med<=L->length)
{  if(L->r[med].key==L->r[med+1].key)
       med++;
     else
   return med+1;
}
}

void mode(SqList *L,int a,int b,int *max_num,int *max_count)
{
if(a==b)
  return ;
    else
  {
   int l1,r1;
   int med,j,k;
   k=j=med=median(L,a,b);
   l1=L1(L,med);
   r1=R1(L,j);
   if(*max_count<r1-l1-1)
    {

     *max_count=r1-l1-1;
     *max_num=L->r[k].key;
    }
   if(l1-a+1>*max_count)
    mode(L,a,l1,max_num,max_count);
   if(b-r1+1>*max_count)
    mode(L,r1,b,max_num,max_count);
  }

}

void main()
{ SqList *L;
int i;
int max_num=0;
int max_count=0;
int n;
printf("enter array's length\n");
	scanf("%d",&n);
printf("enter array's elements\n");
	for(i=1;i<=n;i++)
	scanf("%d",&L->r[i].key);
	for(i=1;i<=n;i++)
	printf("%d  ",L->r[i].key);
	printf("\n");
	L->length=n;

QuickSort(L,1,L->length);
for(i=1;i<=n;i++)
	printf("%d  ",L->r[i].key);
	printf("\n");
mode(L,1,L->length, &max_num,&max_count);
printf("zhongshu:%d\n",max_num);
printf("cishu:%d\n",max_count);
for(i=1;i<=n;i++)
	printf("%d  ",L->r[i].key);
	printf("\n");


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -