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

输入格式:
输入有2行
第1行为1个正整数,表示所生成的随机数的个数:N
第2行有N个用空格隔开的正整数,为所产生的随机数。

输出格式:
输出也是2行,第1行为1个正整数M,表示不相同的随机数的个数。第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。

样例 1 :
输入:
10
20 40 321 67 40 20 89 301 407 15
输出:
8
15 20 40 67 89 301 321 407

样例 2 :
输入:
20
20 40 321 677 40 20 89 301 407 515 40 321 67 40 20 89 301 407 15 499
输出:
11
15 20 40 67 89 301 321 407 499 515 677

思路分析:首先通过快排将待排数据由小到大排序,然后相邻进行比较。若不相同则number++计数,最后输出number+1,因为比较到,倒数第二个和倒数第一个比较,但是若倒数第二个和倒数第一个相同,此时需要计数一个。同样,再次比较,若相邻俩数不同则输出,最后比较到,倒数第二个和倒数第一个,若倒数第二个和倒数第一个相同,此时也得输出一个,我这里是直接将最后一个数给输出。

代码如下:

#include <iostream>
#include <stdio.h>
using namespace std;
int a[101],N;void quicksort(int left,int right){//快排int i,j,t,temp;if(left>right){return;}temp=a[left];i=left;j=right;while(i!=j){while(a[j]>=temp && i<j){j--;}while(a[i]<=temp && i<j){i++;}if(i<j){t=a[i];a[i]=a[j];a[j]=t;}}a[left]=a[i];a[i]=temp;quicksort(left,i-1);quicksort(i+1,right);
}int main()
{int i,j,number=0;scanf("%d",&N);for(i=1;i<=N;i++){scanf("%d",&a[i]);}quicksort(1,N);for(j=1;j<N;j++){//到N-1结束if(a[j]!=a[j+1]){//相邻两数不相等,开始计数number++;}}printf("%d\n",number+1);//若最后两个数相同,需要输出一个,即number+1for(j=1;j<N;j++){//到N-1结束if(a[j]!=a[j+1]){//相邻两数不相等,开始输出即可printf("%d ",a[j]);}}printf("%d",a[N]);//若最后两个数相同,需要输出一个,这里我是将最后一个数输出return 0;
}

明明的随机数(快排)相关推荐

  1. 使用Java泛型实现快速排序(快排,Quicksort)

    原文:https://my.oschina.net/u/1382972/blog/169747 还可以参考:http://blog.csdn.net/stushan/article/details/5 ...

  2. PID1 / 明明的随机数

    明明的随机数☆ 题目描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去 ...

  3. C语言排序算法 选择排序 插入排序 快速排序 qsort实现快排 堆排序

    常见排序算法 选择排序 选择排序(Selection sort)是一种简单直观的排序算法. 它的工作原理如下. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素 ...

  4. python编码效率高吗_【原创】杠精的日常-讨论python快排的效率

    事情的起因是我的一个回答: 里面的大佬提供了一个快排算法 def 快排(a): return a and 快排([i for i in a if ia[0]]) 一行代码写的十分优雅. 于是我写了如下 ...

  5. 2018年蓝桥杯B组题E题+快排

    题目: E 快速排序:以下代码可以从数组a[]中找出第k小的元素. 它使用了类似快速排序中的分治算法,期望时间复杂度是O(N)的. 请仔细阅读分析源码,填写划线部分缺失的内容. #include &l ...

  6. 【数据结构与算法】快排、归并 O(nlogn) 基于比较

    冒泡.插入.选择 O(n^2) 基于比较 快排.归并 O(nlogn) 基于比较 计数.基数.桶 O(n) 不基于比较 一.分治思想 1.分治思想:分治,顾明思意,就是分而治之,将一个大问题分解成小的 ...

  7. 明明的随机数冒泡排序c 语言,NOIP复赛 c++-明明的随机数(算法和原码参考)

    问题描述-明明的随机数]明明想在学校中请一些同学一起做问卷调查,为了实验的客观性,他先用计算机生成了N 个1 到1000 之间的随机整数,(N≤100),对于其中重复的数字,只保留一个,把其余相 同的 ...

  8. Mr.J--蓝桥杯--明明的随机数

    问题描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应 ...

  9. P1059 明明的随机数(C/C++)

    传送门:洛谷 P1059 明明的随机数 题目描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保 ...

最新文章

  1. 《Typecript 入门教程》 2、访问控制符:public、private、protected、readonly
  2. tensorflow 添加官方代码--以leaky_relu为例
  3. hdu 4101(bfs+博弈)
  4. HUST - 1016 幼儿园小朋友们的难题(水题)
  5. Qt工作笔记-QMenu::exec中使用QWidget::mapToGlobal()与QCursor::pos()之间的些许差异
  6. 【博士后招聘】清华大学计算机系自然语言处理与社会人文计算实验室面向海内外招聘博士后...
  7. 大数据、Hadoop、Hbase介绍
  8. 2013职称计算机幻灯片题库,2013职称计算机考试题库宝典及答案解析(全).doc
  9. android源码分析!程序员怎样优雅度过35岁中年危机?送大厂面经一份!
  10. web前端——常用的标签
  11. MongoDB索引原理
  12. python实现归结演绎推理_归结演绎推理
  13. 南财计算机专业学科评估,江苏软件工程专业大学排名:江苏哪些大学软件工程比较好?...
  14. 使用gtest做单元测试
  15. 20200321——IO 多路复用
  16. 【解决】Android 腾讯地图 选点定位组件,获取当前位置有偏差所遇到的坑!!
  17. 一个人最顶级的才华,是会填坑
  18. 【leetcode刷题】73.商品折扣后的最终价格——Java版
  19. RoboGuide学习笔记(一)——基本工作站的建立
  20. Pytorch | yolov3原理及代码详解(二)

热门文章

  1. 布尔表达式的语法及语义分析程序_XSS语义分析的阶段性总结(一)
  2. css实现左(右)侧固定宽度,右(左)侧宽度自适应 ---清除浮动
  3. CSS3中的透明属性opacity的用法实例
  4. DataFrame.to_dict(orient='dict')英文文档翻译
  5. 图的顺序存储(邻接矩阵存储)【摘录自严长生老师的网站】
  6. Linux历史,安装,分区,版本
  7. Mysql数据库安全管理配置
  8. JAVA 作业:图形界面
  9. recovery编译问题汇总
  10. 关于.net项目从vs2003升级到2005的若干问题