题解 | #明明的随机数#
明明的随机数
https://www.nowcoder.com/practice/3245215fffb84b7b81285493eae92ff0
#include <stdio.h>
#include<stdlib.h>
//解题思路:先排序,无需去重,只输出不重复的即可
int Partition(int * list,int low,int high);
void QuickSort(int * list,int low,int high)
{
if(low<high)
{
int pivotpos=Partition(list,low,high);
QuickSort(list, low, pivotpos-1);
QuickSort(list, pivotpos+1, high);
}
}
int Partition(int* list,int low,int high)
{
int pivot=list[low];
while(low<high)
{
while(low<high&&list[high]>=pivot)
high--;
list[low]=list[high];
while(low<high&&list[low]<=pivot)
low++;
list[high]=list[low];
}
list[low]=pivot;
return low;
}
int main() {
int n,i=0,*set,j=0;
int ret[500]={0};
scanf("%d",&n);
set=(int *)malloc(sizeof(int)*n);
for(i=0;i<n;i++)
{
scanf("%d",&set[i]);
}
QuickSort(set, 0, n-1);//快排
for(i=1;i<n;i++)
{
if(set[i-1]!=set[i])
{
printf("%d\n",set[i-1]);
}
}
printf("%d",set[n-1]);//最后两个元素无论是否相同都缺一个没输出,再输出最后一个即可
return 0;
}
