C 在排序之前,如何获取数字在数组中的前一个位置?
我有一个从降序排列我的数字数组的代码,但我还想知道数组中数字的第n个位置,然后再排序。我怎么知道C 在排序之前,如何获取数字在数组中的前一个位置?,c,arrays,sorting,C,Arrays,Sorting,我有一个从降序排列我的数字数组的代码,但我还想知道数组中数字的第n个位置,然后再排序。我怎么知道 int main () { int H[200]; int i,j; double a; for( i = 0; i < 200; ++i) { for( j = i+1; j < 200; ++j) { if(H[i] < H[j])
int main ()
{
int H[200];
int i,j;
double a;
for( i = 0; i < 200; ++i)
{
for( j = i+1; j < 200; ++j)
{
if(H[i] < H[j])
{
a = H[i];
H[i] = H[j];
H[j] = a;
}
}
}
printf("H in descending order \n");
for ( i = 0; i < 200; ++i)
{
printf("%lf \n",H[i];
}
}
int main()
{
int H[200];
int i,j;
双a;
对于(i=0;i<200;++i)
{
对于(j=i+1;j<200;++j)
{
if(H[i]
获得此结果的一种可能性是,如上文所述,将值存储在结构中,并对结构进行排序
排序时,必须注意数据类型。您将int和double混合在一起。另外,%lf
不用于打印int
值
以下代码列出了long
,并提供了编号的初始索引
#include <stdio.h>
typedef struct sort_s{
long number;
long index;
}sort_t;
int main(void){
sort_t S[200];
long H[200];
long i,j;
long a;
for(i=0;i<200;i++){
S[i].number = H[i];
S[i].number = i; /*for testing*/
S[i].index = i;
}
for( i = 0; i < 200; ++i)
{
for( j = i+1; j < 200; ++j)
{
if(S[i].number < S[j].number)
{
a = S[i].number;
S[i].number = S[j].number;
S[j].number = a;
}
}
}
printf("H in descending order \n");
for ( i = 0; i < 200; ++i)
{
printf("%ld at pos: %ld \n",S[i].number,S[i].index);
}
return 0;
}
#包括
typedef结构排序{
长数;
长指数;
}分类;
内部主(空){
排序[200];
长H[200];
长i,j;
长a;
对于(i=0;i在排序之前复制数组。在排序之前复制数组。顺便说一句,main
函数不应该是void
,它应该是int main(void)
或int main(int argc,char**argv)
代码片段中的.mod
有什么用途?就我个人而言,我会使用一个结构数组,其中每个结构都包含数据以及数据的原始索引。如果你认真对待这个网站以及如何更好地编码,我会从选择更好的用户名开始。你不也应该交换S[x]。索引也可以
这样值+索引就可以保留了吗?我制作了一个结构并执行了排序功能。这非常有效,谢谢你的想法。