C语言题输入N个无序的数,请将相同的数删成只剩下一个,并将删除后的数列从小到大排序后输出。(如输入:8 32 12 25 12 8 36 25 26 12 ,输出:8 12 25 26 32 36)输入格式 二行,第一行整数N(小于1000),表示有N个整数; 第二行,N个无序的整数(小于32767)。 输出格式 排序后并删除相同整数输出。
时间: 2024-03-13 22:46:38 浏览: 95
好的,这是一个典型的去重并排序的问题,可以使用C语言中的数组和排序算法来解决。下面是代码示例:
```c
#include <stdio.h>
void quick_sort(int arr[], int low, int high);
void swap(int *a, int *b);
int main() {
int n;
scanf("%d", &n);
int arr[n];
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
quick_sort(arr, 0, n - 1);
int prev = arr[0];
printf("%d ", prev);
for (int i = 1; i < n; i++) {
if (arr[i] != prev) {
printf("%d ", arr[i]);
prev = arr[i];
}
}
return 0;
}
void quick_sort(int arr[], int low, int high) {
if (low < high) {
int pivot = arr[high];
int i = low - 1;
for (int j = low; j < high; j++) {
if (arr[j] < pivot) {
i++;
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i + 1], &arr[high]);
int p = i + 1;
quick_sort(arr, low, p - 1);
quick_sort(arr, p + 1, high);
}
}
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
```
代码中使用了快速排序算法来对输入的数组进行排序,然后遍历数组,输出不同的元素即可。注意需要维护一个变量来记录前一个输出的元素,避免重复输出。
阅读全文