阿里巴巴国际站运营工作内容,北京通智能小程序,阿里巴巴官网卖家版,查网站域名备案查询系统明明想在学校中请一些同学一起做一项问卷调查#xff0c;为了实验的客观性#xff0c;他先用计算机生成了N个1到1000之间的随机整数#xff08;N≤100#xff09;#xff0c;对于其中重复的数字#xff0c;只保留一个#xff0c;把其余相同的数去掉#xff0c;不同的数…明明想在学校中请一些同学一起做一项问卷调查为了实验的客观性他先用计算机生成了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计数最后输出number1因为比较到倒数第二个和倒数第一个比较但是若倒数第二个和倒数第一个相同此时需要计数一个。同样再次比较若相邻俩数不同则输出最后比较到倒数第二个和倒数第一个若倒数第二个和倒数第一个相同此时也得输出一个我这里是直接将最后一个数给输出。
代码如下
#include iostream
#include stdio.h
using namespace std;
int a[101],N;void quicksort(int left,int right){//快排int i,j,t,temp;if(leftright){return;}tempa[left];ileft;jright;while(i!j){while(a[j]temp ij){j--;}while(a[i]temp ij){i;}if(ij){ta[i];a[i]a[j];a[j]t;}}a[left]a[i];a[i]temp;quicksort(left,i-1);quicksort(i1,right);
}int main()
{int i,j,number0;scanf(%d,N);for(i1;iN;i){scanf(%d,a[i]);}quicksort(1,N);for(j1;jN;j){//到N-1结束if(a[j]!a[j1]){//相邻两数不相等开始计数number;}}printf(%d\n,number1);//若最后两个数相同需要输出一个即number1for(j1;jN;j){//到N-1结束if(a[j]!a[j1]){//相邻两数不相等开始输出即可printf(%d ,a[j]);}}printf(%d,a[N]);//若最后两个数相同需要输出一个这里我是将最后一个数输出return 0;
}