老师给了小乐乐一个正整数序列,要求小乐乐把这个序列去重后按从小到大排序。但是老师给出的序列太长了,小乐乐没办法耐心的去重并排序,请你帮助他。
老师给了小乐乐一个正整数序列,要求小乐乐把这个序列去重后按从小到大排序。但是老师给出的序列太长了,小乐乐没办法耐心的去重并排序,请你帮助他。
第一行包含一个正整数n,表示老师给出的序列有n个数。接下来有n行,每行一个正整数k,为序列中每一个元素的值。(1 ≤ n ≤ 105,1 ≤ k ≤ n)
输出一行,为去重排序后的序列,每个数后面有一个空格。
4 2 2 1 1
1 2
5 5 4 3 2 1
1 2 3 4 5
#include <stdio.h>
#include <malloc.h>
#include <assert.h>
void QuickSort(int* left, int* right)
{
assert(left && right);
//只剩1个元素,无需继续排序
//开始回归
if (left >= right)
{
return;
}
int* i = left;
int* j = right;
int pivot = *left;
while (i < j)
{
//j在小于pivot的地方停下来
while (*j >= pivot && j > i)
{
j--;
}
*i = *j;
//i在大于pivot的地方停下来
while (*i <= pivot && i < j)
{
i++;
}
*j = *i;
}
//将基准元素pivot放入它该在的位置
*j = pivot;
QuickSort(left, i - 1);//i是上一轮已经处理好的元素,所以 -1 处理左边的元素
QuickSort(j + 1, right);//j是上一轮已经处理好的元素,所以 +1 处理右边的元素
}
int main()
{
int n = 0;
int i = 0;
int* p = NULL;
scanf("%d", &n);
//开辟空间
p = (int*)malloc(sizeof(int) * n);
if (!p)
{
perror("malloc:p");
return 1;
}
//录入数列
for (i = 0; i < n; i++)
{
scanf("%d", p + i);
}
//进行排序
QuickSort(p, p + n - 1);
//进行去重输出
printf("%d ", *p);
for (i = 1; i < n; i++)
{
if (*(p + i) == *(p + i - 1))
{
continue;
}
printf("%d ", *(p + i));
}
//释放空间
free(p);
p = NULL;
return 0;
} #include<stdio.h>
int main()
{
int arr[100000]= {0};
int n = 0;
scanf("%d",&n);
int i = 0;
int k = 0; //每一行的正整数
for(i = 0;i<n;i++)
{
scanf("%d",&k);
arr[k] = k;
}
for(i = 0;i<n;i++) //打印
{
if(arr[i])//不为0的时候打印
printf("%d ",arr[i]);
}
return 0;
} #include<stdio.h>
int main()
{
int i, n, k;
while (~scanf("%d", &n))
{
int arr[100001] = { 0 };
int max = 0;
//出现过的数字,该元素改为1,作为标记
for (i = 0; i < n; i++)
{
scanf("%d", &k);
arr[k] = 1;
if (max < k)
max = k;
}
//正序输出标记过的数
for (i = 0; i <= max; i++)
{
if (arr[i])
printf("%d ", i);
}
printf("\n");
}
return 0;
} #include<stdio.h>
#include<malloc.h>
int cmp(const void* e1, const void* e2)
{
return *(int*)e1 - *(int*)e2;
}
int main()
{
int n,i,j;
scanf("%d",&n);
int* arr = (int*)malloc(n * sizeof(int));
for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(arr[j]==arr[i])//相同则置零
arr[j]=0;
}
}
qsort(arr,n,sizeof(int),cmp);//数据排序
for(i=0;i<n;i++)
{
if(arr[i]!=0)
{
printf("%d ",arr[i]);
}
}
return 0;
}