【发布时间】:2020-11-30 10:41:54
【问题描述】:
我有一个小问题,我有一个数组:
int tab[] = {7,2,6,1,8,1,5,3,7,2} //index: 0-9
它的索引=值:
0 = 7,
1 = 2,
2 = 6,
3 = 1,
4 = 8,
5 = 1,
6 = 5,
7 = 3,
8 = 7,
9 = 2,
我想在第二个数组中包含第一个数组的排序索引。
int tab2 应该是:index = value(第一个数组的索引但已排序):
0 = 3,
1 = 5,
2 = 1,
3 = 9,
4 = 7,
5 = 6,
6 = 2,
7 = 0,
8 = 8,
9 = 4,
我有一个快速排序的代码,但它不会对第一个数组进行排序,而是在第二个数组中写入一个排序索引。
void quicksort(int *tab, int p, int q,int *tb){
int v=tab[p];
int i,j,x;
i=p;
j=q;
do
{
while(tab[i]<v) i++;
while(tab[j]>v) j--;
if(i<=j)
{
x=tab[i];
tab[i]=tab[j];
tab[j]=x;
i++;
j--;
}
}
while(i<=j);
if(j>p) quicksort(tab,p, j,tb);
if(i<q) quicksort(tab, i, q,tb);
}
【问题讨论】:
-
这是你想要在 C 中做的事情吗?还是 C++?两者实际上完全不同。
-
我尝试这样做我 C
-
啊,那我的欺骗票就到这里了。而是看看keeping track of the original indices of an array after sorting in C
-
函数
tb中的参数quicksort有什么用处? -
tb 是第二个数组,它的指针。在这个数组中,我应该有第一个数组选项卡的排序索引
标签: arrays c sorting quicksort