Как отсортировать одномерный массив в java по порядку возрастания

01.01.2001

как отсортировать одномерный массив в java по порядку возрастания

  • uses crt;
    const SIZE=20;
    type data = byte;
    var Queue : array[1..size] of data;
    first, last : integer;
    a: data;
    i, j, k: integer;
    begin
    clrscr;
    randomize;
    for j:=1 to size do
    begin
    Queue[j]:=random(50);
    write(' ',Queue[j]);
    end;
    writeln;
    writeln(' ------/------');
    for i:= 1 to SIZE-1 do
    for j:= 1 to SIZE-i do
    if Queue[j]>Queue[j+1] then
    begin
    k:=Queue[j];
    Queue[j]:=Queue[j+1];
    Queue[j+1]:=k;
    end;
    for i:= 1 to size do
    write (' ',Queue)
    end.

    Сортировка выбором
    for (int i = 0; i < a.length; i++) {

    /* Предполагаем, что начальный элемент рассматриваемого

    * фрагмента и будет минимальным.

    */

    int min = a; // Предполагаемый минимальный элемент

    int imin = i; // Индекс минимального элемента

    /* Просматриваем оставшийся фрагмент массива и ищем там

    * элемент, меньший предположенного минимума.

    */

    for (int j = i+1; j < a.length; j++) {

    /* Если находим новый минимум, то запоминаем его индекс.

    * И обновляем значение минимума.

    */

    if (a[j] < min) {

    min = a[j];

    imin = j;

    }

    }

    /* Проверяем, нашёлся ли элемент меньше, чем стоит на

    * текущей позиции. Если нашёлся, то меняем элементы местами.

    */

    if (i != imin) {

    int temp = a;

    a = a[imin];

    a[imin] = temp;

    }

    }

    Сортировка пузырьком
    /* Внешний цикл постоянно сужает фрагмент массива,

    * который будет рассматриваться, ведь после каждого прохода

    * внутреннего цикла на последнем месте фрагмента будет

    * оказываться нужный элемент (его не надо рассматривать снова) .

    */

    for (int i = a.length - 1; i >= 2; i--) {

    /* В переменной sorted мы будем хранить признак того,

    * отсортирован ли массив. Перед каждым проходом внутреннего

    * цкла будем предполагать, что отсортирован, но если совершим

    * хоть одну перестановку, то значит ещё не конца отсортирован.

    * Этот приём, упрощающий сортировку, называется критерием Айверсона.

    */

    boolean sorted = true;

    /* Во внутреннем цикле мы проходимся по фрагменту массива, который

    * определяется внешним циклом. В этом фрагменте мы устанавливаем

    * правильный порядок между соседними элементами, так попарно

    * обрабатывая весь фрагмент.

    */

    for (int j = 0; j < i; j++) {

    /* Если порядок соседних элементов не правильный, то их

    * надо обменять местами. И запомнить, что была перестановка.

    */

    if (a[j] > a[j+1]) {

    int temp = a[j];

    a[j] = a[j+1];

    a[j+1] = temp;

    sorted = false;

    }

    }

    /* Если массив отсортирован (т. е. не было ни одной перестановки

    * во внутреннем цикле, значит можно прекращать работу внешнего

    * цикла.

    */

    if(sorted) {

    break;

    }

    }

    Источник: Пример на сортировке массива из 20 элементов

Вас заинтересует