【发布时间】:2013-09-26 07:34:07
【问题描述】:
我正在学习C,并谈到了排序的话题。我在其中编写了一个comp() 函数并使用qsort 对int 的数组进行排序。现在对于下一个任务,我需要从数组中删除重复项。
是否可以同时排序和删除重复项?
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int indexes[10] = { 0, 98, 45, 65, 45, 98, 78, 56, 65, 45 };
int comp(const void * elem1, const void * elem2) {
int f = *((int*) elem1);
int s = *((int*) elem2);
if (f > s) {
return 1;
}
if (f < s) {
return -1;
}
return 0;
}
void printIndexArray() {
int i = 0;
for (i = 0; i < 10; i++) {
printf("i is %d\n", indexes[i]);
}
}
int main() {
qsort(indexes, sizeof(indexes) / sizeof(int), sizeof(int), comp);
printIndexArray();
return 0;
}
【问题讨论】:
-
你正在使用内置函数进行排序,编写你自己的函数。