c语言求取数组的序号
时间: 2023-11-24 14:53:34 浏览: 167
2. 求一组数的编号.c
以下是使用C语言求取数组的序号的方法:
1. 首先,我们需要定义一个比较函数Cmp,用于在排序时比较两个元素的大小。该函数的返回值为int类型,如果p1小于p2,则返回负数,如果p1等于p2,则返回0,如果p1大于p2,则返回正数。
```c
int Cmp(void* p1, void* p2) {
return *(int*)p1 - *(int*)p2;
}
```
2. 接下来,我们需要对数组进行排序,并且需要两个新的数组存放排序后数组和保存排序后数组下标。
```c
int* sortArr = (int*)malloc(sizeof(int) * arrSize);int* ans = (int*)malloc(sizeof(int) * arrSize);
memcpy(sortArr, arr, sizeof(int) * arrSize);
qsort(sortArr, arrSize, sizeof(sortArr[0]), Cmp);
```
3. 最后,我们可以通过遍历原始数组,查找每个元素在排序后数组中的下标,即为该元素的序号。
```c
for (int i = 0; i < arrSize; i++) {
int* p = (int*)bsearch(&arr[i], sortArr, arrSize, sizeof(sortArr[0]), Cmp);
ans[i] = p - sortArr + 1;
}
```
阅读全文