Выбор Сортировка Помощь - PullRequest
       4

Выбор Сортировка Помощь

0 голосов
/ 30 января 2010

Привет, мне было интересно, что если бы у вас был массив целых чисел, как бы вы использовали сортировку, используя сортировку выбора в порядке убывания. Я знаю, как сделать это в порядке возрастания, но я не знаю, как сделать это в порядке убывания.

Спасибо!

Ответы [ 5 ]

2 голосов
/ 30 января 2010

Выбор сортировки - это метод сортировки сравнения (вы используете оператор сравнения для получения порядка, который может быть возрастающим или убывающим). Таким образом, чтобы получить нисходящий порядок, вы просто переключаете оператор сравнения с < на >.

Возможно, вы захотите узнать больше о selection sort .

Надеюсь, это поможет.

ура

2 голосов
/ 30 января 2010

Сортировка выбора - сортировка сравнения. Чтобы отсортировать в обратном порядке, просто измените сравнение.

Другими словами, вместо > используйте <.

1 голос
/ 30 января 2010

Сортировка выбора проста, вы смотрите на первый элемент, и если это> element [i], то вы меняете его местами. Например:

8 5 1 9

Начните с элемента 8..посмотрите на следующий элемент меньшего размера, поэтому поменяйте местами:

5 8 1 9

Теперь посмотрите на следующий элемент 1, он тоже меньше, чем 5 позиций обмена

1 8 5 9

Наконец, 9> 1, переходите к следующему элементу (8) и сравнивайте ... продолжайте делать это, пока не получите

1 5 8 9

Теперь выполнить обратную сортировку по убыванию - это тот же алгоритм, но вы просто проверяете, является ли он> скорее, чем <. </strong>

Например,

1 9 5 8

Начните с 1, это 9> 1, да, так что поменяйте местами:

9 1 5 8

Продолжайте движение ... вторая цифра равна 1 <5, поменяйте местами: </p>

9 5 1 8

Продолжайте делать это, пока у вас не будет

9 8 5 1

Вот некоторый псевдокод, это не Java, а C, но он должен помочь вам понять, что если вы можете реализовать сортировку выбора по возрастанию, то вы можете сделать это по убыванию:

 while(pTemp2 != NULL)
   {   
       //we implement a selection sort 
       //check if incoming node->datum with each node in the list
       //swap values if >
      if (pTemp2->datum > pTemp->datum)
         {
         //swap the values
         int temp = pTemp->datum;
         pTemp->datum = pTemp2->datum;
         pTemp2->datum = temp;
         }
         //advance the pointer
      pTemp2=pTemp2->next;
   }
0 голосов
/ 30 января 2010

Если вы понимаете, как сортировка выбора работает, сделать сортировку по убыванию должно быть тривиально. Возможно, было бы неплохо еще раз просмотреть свои заметки / книгу и понять, как на самом деле работает сортировка выбора.

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

0 голосов
/ 30 января 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...