在C中将ShellSort更改为SelectionSort

时间:2019-06-01 11:17:22

标签: c sorting selection-sort shellsort

我需要在程序ShellSort方法中将处理文件的方法更改为Selection Sort,也需要处理文件的方法。

我不明白如何使用文件和文件中的“ b”。

void Sortare_Shell(void)
{
  int i,k,n,step;
  f = fopen("firme.txt","r+");

  for(i = 0; fread(&parf[0], sizeof(parf[0]), 1, f); n++);

  for(step = n/2; step > 0; step /= 2)
     for(i = step; i < n; i++)
     {
        fseek(f, (i - step) * sizeof(parf[0]), SEEK_SET);
        fread(&parf[0], sizeof(parf[0]), 1, f);
        fseek(f, i * sizeof(parf[1]), SEEK_SET);
        fread(&parf[1], sizeof(parf[1]), 1, f);

        for(k = i - step; k >= 0 && parf[0].volum > parf[1].volum; k -= step)
        {
            fseek(f, k * sizeof(parf[1]), SEEK_SET);
            fwrite(&parf[1], sizeof(parf[1]), 1, f);
            fseek(f, (k + step) * sizeof(parf[0]), SEEK_SET);
            fwrite(&parf[0], sizeof(parf[0]), 1, f);

            if( (k - step) >= 0 )
            {
               fseek(f, (k - step) * sizeof(parf[0]), SEEK_SET);
               fread(&parf[0], sizeof(parf[0]), 1, f);
               fseek(f, k * sizeof(parf[1]), SEEK_SET);
               fread(&parf[1], sizeof(parf[1]), 1, f);
            }
        }
     }
  fclose(f);
  printf("\n Sortarea s-a finisat \n");
}

0 个答案:

没有答案