描述
给定一个整数序列,KiKi想把其中的重复的整数去掉,并将去重后的序列从小到大排序输出。
输入描述:
第一行,输入一个整数n,表示序列有n个整数。
第二行输入n个整数(每个整数大于等于1,小于等于1000),整数之间用空格分隔。
输出描述:
去重并且从小到大排列的整数序列,整数之间用空格分隔。
暴力求解法 :先排序后再去重。 去重用另外一个数组接受。
#include<stdio.h> #include<stdlib.h> int cmp_t(int* e1, int* e2) { return *e1-*e2; } int main() { int n=0; int i=0; int j=1; int arr[1024]={0}; int a[1024]={0}; scanf("%d", &n); for(i=0; i<n; i++) { scanf("%d ", &arr[i]); } qsort(arr, n, sizeof(arr[0]), cmp_t); a[0]=arr[0]; for(i=1; i<n; i++) { if(arr[i-1]!=arr[i]) { a[j++]=arr[i]; } } for(i=0; i<j; i++) { printf("%d ", a[i]); } return 0; }
另外一种方法
#include<stdio.h> int main() { int n; scanf("%d", &n); int arr[1001] = { 0 };//赋初值0. int i = 0; int m = 0; for (i = 0; i < n; i++) { scanf("%d", &m); arr[m] = m;//可以存数又可以去重。 } for (i = 0; i < 1001; i++) { if (arr[i] != 0) { printf("%d ", arr[i]); } } return 0; }