您的位置:澳门402永利com > 计算机 网络 > 隔壁次数,数字排序难题

隔壁次数,数字排序难题

发布时间:2019-09-24 14:09编辑:计算机 网络浏览(163)

    奥门永利402官方网站,澳门402永利com,编一C程序,它能读入一串(n个)整数(以-9999为了却标志),

    402com永利手机版,数字排序难点(c++完毕),排序

    汇报:给定n个整数,请总计出种种整数出现的次数,按出现次数从多到少的次第输出。

    输入:输入的首先行李包裹括三个平头n,表示给定数字的个数。
    第二行包含n个整数,相邻的整数之间用一个空格分隔,表示所给定的莫西干发型。

    输出:输出多行,每行饱含多个整数,分别代表三个加以的整数和它出现的次数。按出现次数递减的顺序输出。假诺三个整数出现的次数同样多,则先输出值非常的小的,然后输出值非常大的。

    input:

    12
    5 2 3 3 1 3 4 2 5 2 3 5
    

    output:

    3 4
    2 3
    5 3
    1 1
    4 1
    
    分析:该题难点在于按出现次数递减的顺序输出整数和他出现的次数,所以需要二维数组a[10][2],其中a[][0]存整数,a[][1]存该整数出现次数,排序时整体交换,如果出现相同则线输出较小的再输出较大的,这里用到一个小技巧,具体看代码。
    
     1 #include<iostream>
     2 using namespace std;
     3 
     4 void sort(int a[][2])
     5 {
     6     int min;
     7     int n = 0;
     8     for (int i = 0; i < 10; i++)            //只对个数不为0的数字进行排序,由于初始是从小到大拍的,排序完成后相同的也是按从小到大
     9     {
    10         if (a[i][1] != 0)
    11             n++;
    12     }
    13     for (int i = 0; i < n; i++)
    14     {
    15         for (int i = 0;; i++)
    16         {
    17             if (a[i][1] != 0)
    18             {
    19                 min = i;
    20                 break;
    21             }
    22         }
    23 
    24         for (int j = 0; j <= 9 - i; j++)
    25         {
    26             if (a[j][1]!=0)
    27                 if (a[min][1] >= a[j][1])
    28                     min = j;
    29         }
    30         int x = a[min][0], y = a[min][1];
    31         a[min][0] = a[9 - i][0]; a[min][1] = a[9 - i][1];
    32         a[9 - i][0] = x; a[9 - i][1] = y;
    33     }
    34 }
    35 int main()
    36 {
    37     int n,x;
    38     static int a[10][2];
    39     cin >> n;
    40     for (int i = 0; i < 10; i++)
    41         a[i][0] = i;
    42     for (int i = 0; i < n; i++)
    43     {
    44         cin >> x;
    45         a[x][1]++;
    46     }
    47     sort(a);
    48     for (int i = 0; i < 10; i++)
    49     {
    50         if (a[i][1] != 0)
    51             cout << a[i][0] << " " << a[i][1] << endl;
    52     }
    53     system("pause");
    54     return 0;
    55 }
    

    PS:以为写麻烦了,接待有简化方法的调换。。。。

    描述:给定n个整数,请计算出各类整数出现的次数,按出现次数从多到少的逐条输出。 输入:输入的第一...

    并决断第3个整数在后(n-1)个整数中冒出的次数,再出口该次数。

    输入时,多个相邻的卡尺头用空格隔绝)。

    #include"stdafx.h"
    #include<stdio.h>
    #define MAX 100
    void main()
    {
        int a[MAX];
        int i=0,c=0,t,k;
        printf("请输入一串整数,以-9999作为结束标记\n");
        do{
            scanf("%d",&a[i]);
            if(a[i]==-9999)
                break;
            i++;
        }while(9);
        k=i;
        printf("\n这个整数串的第一个数是:%d\n",a[0]);
        t=a[0];
        for(i=1;i<k;i++){
            if(a[i]==t)
                c++;
        }
        printf("\n第一个整数在后(n-1)个整数中出现的次数为:%d\n",c);
    }
    //该片段来自于http://outofmemory.cn
    

    本文由澳门402永利com发布于计算机 网络,转载请注明出处:隔壁次数,数字排序难题

    关键词:

上一篇:二叉树前序和中序序列构造该二叉树

下一篇:没有了