Сортировка массива уникальных случайных чисел при вставке - PullRequest
1 голос
/ 30 сентября 2011

Я нашел кусок кода, который хорошо работает, чтобы заполнить массив уникальными случайными числами.Теперь моя проблема в том, что я хочу отсортировать эти числа, но не после того, как массив заполнится, а после того, как будут вставлены новые числа.Так как каждое новое число вставляется в массив, если находит позицию, в которой оно должно быть. Код, который у меня есть для создания уникальных случайных чисел, приведен ниже, заранее благодарю:

    #include <iostream>
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    using namespace std;
    #define MAX 2000        // Values will be in the range (1 .. MAX) 
    static int seen[MAX];   // These are automatically initialised to zero
                            // by the compiler because they are static.
    static int randomNum[1000];

    int main (void) {
    int i;

    srand(time(NULL));   // Seed the random number generator. 

    for (i=0; i<1000; i++) 
    {
      int r;
      do 
  {
        r = rand() / (RAND_MAX / MAX + 1);
      } 
    while (seen[r]);
        seen[r] = 1;
        randomNum[i] = r + 1;
      }

      for (i=0; i<1000; i++)
        cout << randomNum[i] << endl;

  return 0;
} 

1 Ответ

1 голос
/ 30 сентября 2011

Вы ищете сортировку вставок .

После того, как вы получили эту работу, вы должны переключиться на двоичную сортировку вставок .Двоичная сортировка вставок намного быстрее, если массив большой.

...