logo search
ифа_экзамен(шпоры)

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

О дин из самых простых методов сортировки работает следующим образом: находим наименьший элемент в массиве и обмениваем его с элементом находящимся на первом месте, потом повторяем процесс со второй позиции в файле и найденный элемент обмениваем со вторым элементом и так далее пока весь массив не будет отсортирован. Этот метод называется сортировка выбором поскольку он работает циклически выбирая наименьший из оставшихся элементов. Сортировка выбором procedure selection; var i, j, min, t : integer; begin     for i:=1 to N-1 do     begin         min := i;         for j:=i+1 to N do             if a[j]<a[min] then min := j;         t := a[min]; a[min] :=a[i]; a[i] := t;     end; end;

По мере продвижения указателя i слева направо через файл, элементы слева от указателя находятся уже в своей конечной позиции (и их не больше уже не будут трогать), поэтому массив становится полностью отсортированным к тому моменту, когда указатель достигает правого края.

Этот метод - один из простейших, и от работает очень хорошо для небольших файлов. Его "внутренний цикл" состоит из сравнения a[i]<a[min] (плюс код необходимый для увеличения j и проверки на то, что он не превысил N), что вряд ли можно еще упростить. Ниже мы обсудим то, сколько скорее всего раз эти инструкции будут выполняться.

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