Сортировка массива методом перестановки

Язык Си
04.02.2017

(Всего голосов: 0)

Суть данного метода очень проста. Мы поочередно сравниваем каждые два элемента массива. Если они стоят не в том порядке, то просто меняем их местами. Так, с помощью цикла, мы сортируем элементы массива.

Данная программа располагает элементы массива в порядке убывания.

#include <cstdlib>
#include <stdio.h>

int main(int argc, char** argv) {
    int mas[100];
    int n, i;
    printf("Input n:\n");
    scanf("%d", &n);                      //задаем количество элементов массива
    printf("Input mas:\n");
    for (i = 0; i < n; i++) {
        scanf("%d", &mas[i]);             //вводим элементы массива
    }
    for (int j = 0; j < n; j++) {         //повторение перебора необходимое количство раз
        for (i = 0; i < n - 1; i++) {     //разовый перебор элементов массива
            int tmp = 0;
            if (mas[i] < mas[i + 1]) {    //если порядок не соблюдается 
                tmp = mas[i];             //меняем числа местами
                mas[i] = mas[i + 1];
                mas[i + 1] = tmp;
            }
        }
    }
    for (i = 0; i < n; i++) {
        printf("%d ", mas[i]);            //вывод отсортированного массива на экран
    }
    return 0;
}

Почему два цикла? Допустим, мы ввели массив: 1 4 3 6 8. Внутренний цикл обеспечит разовый перебор чисел. По окончании него мы получим массив: 4 3 6 8 1. Теперь, за счет внешнего цикла повторится внутренний цикл. И так далее...

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

Результат на экране:

Input n:
8
Input mas:
1 4 6 2 0 3 9 1
9 6 4 3 2 1 1 0 Для закрытия терминала нажмите клавишу [ВВОД]...

 


Оставить комментарий