7 мая 2015 г.

Массивы. Часть 2 – одномерные массивы.

Одномерные массивы, по сути, представляют собой список однотипных переменных. Все! На этом с теорией в данном разделе все! Далее только практика, так как материал достаточно простой и вся теория по нему была в предыдущем посте.

Теперь к делу! Рассмотрим простой алгоритм сортировки массива целых чисел по возрастанию:

Вывод у этой программы может быть таким:

A00003

А теперь немного изменим этот алгоритм и сравним его производительность с первым:

Вывод этой программы может быть таким:

A00004

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

В другой раз вывод может быть таким:

A00005

Суть этой программы такова. Мы создаем массив intOrigin в котором храним не сортированный массив, затем копируем этот массив в массив intArray, который затем сортируем первым алгоритмом, и после сортировки, снова копируем не сортированный массив в intArray и опять его сортируем вторым алгоритмом. В обоих алгоритмах считаем количество итераций. Как видим в первом алгоритме оно постоянно, во втором же оно меняется. В целом, второй алгоритм более эффективен чем первый.

Ну и для примера рассмотрим еще один алгоритм сортировки называемый сортировкой выбором. Суть алгоритма такова. Во всём отыскиваем минимальный элемент, меняем его местами с начальным. Затем в оставшейся части массива (т. е. среди всех элементов кроме начального) снова отыскиваем минимальный элемент, меняем его местами уже со вторым элементом в массиве. И так далее.

Теперь программа может  сгенерировать такой вывод:

A00006

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

Следующая программа более простая. Она демонстрирует динамическое создание и инициализацию массива значениями:

A00007Массив строк str создается только в случае если в командной строке передано два или больше аргументов и инициализируется значениями первых двух аргументов.

В данном случае длина массива известна, но будет ли создан сам массив str не известно, так как это зависит от переданных аргументов.

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

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

Вывод этой программы может быть таким:

A00008

1 комментарий:

  1. Массив до начала сортировки
    93 69 35 10 45 93 7 37 22 68 7 99 41 38 84 69 57 70 72 0
    Массив после сортировки
    0 7 7 10 22 35 37 38 41 45 57 68 69 69 70 72 84 93 93 99
    Количество итераций = 190
    Массив до начала сортировки
    93 69 35 10 45 93 7 37 22 68 7 99 41 38 84 69 57 70 72 0
    Массив после сортировки
    7 0 7 10 22 35 37 38 41 45 57 68 69 69 70 72 84 93 93 99
    Количество итераций = 189


    у меня вот так даже отсортировалось второй вариант почему-то ошибку совершил

    ОтветитьУдалить