选择使用srand输入排序代码

时间:2015-03-19 07:12:33

标签: c sorting selection-sort

我的导师让我们负责编译一个代码,我们在C中制作一个选择排序代码,就像我在网上找到的那样,

#include <stdio.h>

int main()
{
   int array[100], n, c, d, position, swap;

   printf("Enter number of elements\n");
   scanf("%d", &n);

   printf("Enter %d integers\n", n);

   for ( c = 0 ; c < n ; c++ )
      scanf("%d", &array[c]);

   for ( c = 0 ; c < ( n - 1 ) ; c++ )
   {
      position = c;

      for ( d = c + 1 ; d < n ; d++ )
      {
         if ( array[position] > array[d] )
            position = d;
      }
      if ( position != c )
      {
         swap = array[c];
         array[c] = array[position];
         array[position] = swap;
      }
   }

   printf("Sorted list in ascending order:\n");

   for ( c = 0 ; c < n ; c++ )
      printf("%d\n", array[c]);

   return 0;
}

我们必须使用srand()命令生成一组随机数字,而不是输入数字数组。

我现在已经待了大约4个小时了,我似乎无法得到它 在使用srand()rand()

时,我真的需要帮助

1 个答案:

答案 0 :(得分:0)

首先,srand()用于为随机数生成器播种。您可以使用rand()

生成随机数

阅读本文以获取更多信息

in C, how does srand relate to rand function?

您需要使用srand()为随机数生成器播种(以便我们在每次运行程序时获得不同的值)并使用rand()生成数字。

而不是scanf(),只需使用array[c] = rand() % 100 ;(这会生成0到99之间的随机数,您可以将100更改为任何其他整数)。此代码可用作参考

#include <stdio.h>
#include<time.h>                  //  for time()
#include<stdlib.h>                // for rand()
int main()
{
    srand(time(NULL));                       // seeding the random number generator
   int array[100], n, c, d, position, swap;

   printf("Enter number of elements\n");
   scanf("%d", &n);

   printf("Enter %d integers\n", n);

   for ( c = 0 ; c < n ; c++ )
      array[c]=rand()%100;                 // storing a random number between 0 and 100 ( Note that this might produce the same number more than once )

   for ( c = 0 ; c < ( n - 1 ) ; c++ )
   {
      position = c;

      for ( d = c + 1 ; d < n ; d++ )
      {
         if ( array[position] > array[d] )
            position = d;
      }
      if ( position != c )
      {
         swap = array[c];
         array[c] = array[position];
         array[position] = swap;
      }
   }

   printf("Sorted list in ascending order:\n");

   for ( c = 0 ; c < n ; c++ )
      printf("%d\n", array[c]);

   return 0;
}

我也在添加来自@WhozCraig评论的链接,因为它会很有用

srand()

rand()