Bob来啦

2020年10月02日 23:50 __ _ _ _ _

文章配图

点击上方「 蓝字 」关注”程序员Bob”

每天与你不见不散!

文章配图

每日一句,送给最珍贵的你:

时间并不能证明一切,有些东西还是得靠自己去争取。

本题的解法还是蛮多的,大家有时间还是可以自己研究研究。

题目描述

明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了NN个11到10001000之间的随机整数(N≤100)(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。

输入格式

输入有两行,第11行为11个正整数,表示所生成的随机数的个数NN

第22行有NN个用空格隔开的正整数,为所产生的随机数。

输出格式

输出也是两行,第11行为11个正整数MM,表示不相同的随机数的个数。

第22行为MM个用空格隔开的正整数,为从小到大排好序的不相同的随机数。

输入输出样例

输入

10

20 40 32 67 40 20 89 300 400 15

输出

8

15 20 32 40 67 89 300 400

源代码:


#include<stdio.h>void sort_(int all[], int begin,int end);//快速排序int main(){    int all[100], n, x;    scanf("%d", &n);    int p = n, z = 1, t = 0;    scanf("%d", &all[0]);    for (x = 1; x < n; x++)    {        t = 0;        int y, c;        scanf("%d", &c);        for (y = x - 1; y >= 0; y--)        {            if (c == all[y])            {                p--;//另外再定义一个变量计算数据                t = 1;                break;//直接退出y的for循环            }        }        if (t == 1)            continue;//如果成立就跳掉下面两行        all[z] = c;/*其它数据都要更改,所以再定义一个变量来锁定数        组位置*/        z++;    }    sort_(all,0,p-1);    printf("%d\n", p);    for (int x = 0; x <= p-1; x++)        printf("%d ", all[x]);    return 0;}void sort_(int all[], int begin, int end)//快速排序{    if (begin >= end)//如果指向同一个位置就返回        return;    int i = begin, j = end, k = all[begin];//排序工作初始化    while (i < j)    {        while (i < j && all[j] > k)            j--;        if (i<j)            all[i++] = all[j];        while (i < j && all[i] < k)            i++;        if (i<j)            all[j--] = all[i];    }    all[i] = k;    sort_(all, begin, i - 1);//分别对前后进行排序递归    sort_(all, i + 1, end);}

运行结果:

文章配图

文章配图

**最后的话:****刷题要找自己的不足,然后去专攻。 ** ** ** ** 往期推荐: **

Windows10下JDK8下载及java环境配置 2020-09-29
文章配图

数据结构笔记:线性表走起!(链式存储结构简介) 2020-09-27
文章配图

数据结构:线性表走起!(顺序存储结构) 2020-09-23

为你,千千万万遍.

关注 程序员Bob 公众号, 与你 一起终 生学习

一键三连,就差你了

预览时标签不可点

阅读




__