蛮力法,对一组数据先进行快排,再找出众数

 环境 :Windows10, VS2010

#include <iostream>
#include <string>
using namespace std;

int Partition (int r[],int first,int end)  //划分
{
    int i=first,j=end;
    while (i<j)
    {
        while (i<j && r[i]<=r[j]) j--;
            if (i<j)
            {
                int temp=r[i];r[i]=r[j];r[j]=temp;
                i++;
            }
            while (i<j && r[i]<=r[j]) i++;
            if (i<j)
            {
                int temp=r[i];r[i]=r[j];r[j]=temp;
                j--;
            }
    }
    return i;
}
void Quicksort(int r[], int first, int end)   //快速排序
{
    int pivot;
    if (first<end)
    {
        pivot = Partition(r, first, end);
        Quicksort(r, first, pivot-1);
        Quicksort(r, pivot+1, end);
    }
}    

 int mode(int b[],int m)     //找出众数与出现次数
{
    int i=0,j=0,max = 0,number = 0,many= 0;
    max=0;
    while(i<m)
    {
        i = i + number;
        number = 0;
        for(j=i;j<m;j++)  //j = i j从i开始,不再从零开始
        {
            if(b[j]==b[i])
            {
                number+=1;
            }
            else
            {
                break;      //遇到不相等就跳出,不再继续与后面的比
            }
            if(max<number)
            {
                max=number;
                many=b[i];
            }
        }
    }
    cout<<endl<<"这组数据的众数为:"<<many<<endl<<"出现次数为: "<<max<<endl;  //把结果输出到屏幕
    return 0;    
}


void main()
{
    int Data[100];
    int num;

    cout<<"请输入你的数据的个数(不大于100): "<<endl;  //请用户输入数据的总数与数据
    cin>>num;
    cout<<"请输入你的数据(用空格间隔): "<<endl;
    for(int i=0; i<num; i++)
    {
        cin>>Data[i];
    }
    cout<<"你输入的数据是 "<<endl;    //展示数据
    for(int j=0; j<num; j++)
    {
        cout<<Data[j]<<" ";
    }

    int right = num - 1;     //right作为传入的数组右边界
    Partition (Data, 0, right);  //调用划分
    Quicksort(Data, 0, right); //调用快排

    cout<<endl<<"排序后的数据是: "<<endl;   //查看排序后的数据
    for(int i=0;  i<num; i++)
    {
        cout<<Data[i]<<" ";
    }
    
    mode(Data, num);    //调用mode函数,找到众数

    system("pause");
}

猜你喜欢

转载自blog.csdn.net/a12336487213/article/details/83213593