Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在排序之前,如何获取数字在数组中的前一个位置?_C_Arrays_Sorting - Fatal编程技术网

C 在排序之前,如何获取数字在数组中的前一个位置?

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])

我有一个从降序排列我的数字数组的代码,但我还想知道数组中数字的第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])
             {
               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]。索引也可以
这样值+索引就可以保留了吗?我制作了一个结构并执行了排序功能。这非常有效,谢谢你的想法。