//求数组中第n大数的下标
int * numberNMax(int * array, int size, int n)
{
if (NULL==array) {
printf("Pointer is NULL\n");
exit(EXIT_FAILURE);
}
if (size<1||n<1||n>size) {
printf("Range Error\n");
exit(EXIT_FAILURE);
}
//存储数据和下标
typedef struct stuArray{
int data;
int pos;
}stuArray;
stuArray arr[size];
for (int i=0; i<size; i++) {
arr[i].data=array[i];
arr[i].pos=i;
}
//交换数据和下标
stuArray temp;
for (int j=0; j<n; j++) {
for (int k=0; k<size-1-j; k++) {
if (arr[k].data>arr[k+1].data) {
temp.data=arr[k].data;
temp.pos=arr[k].pos;
arr[k].data=arr[k+1].data;
arr[k].pos=arr[k+1].pos;
arr[k+1].data=temp.data;
arr[k+1].pos=temp.pos;
}
}
}
printf("第%d大的数的下标为:%d\n",n,arr[size-n].pos);
return array;
}
C:numberNMax 数组中第n大数的下标,方法比较笨,应用二级指针
最新推荐文章于 2022-03-23 20:44:01 发布