36546

Алгоритмы обработки одномерных массивов.Сортировка.Сравнить 2 метода

Доклад

Информатика, кибернетика и программирование

Первый шаг сортировки методом пузырька 1Сравниваем первый и второй элементы массива. 2Сравниваем второй и третий элементы массива. 3Cравниваем предпоследний N1 и последний N элементы массива. Повторяем вышеуказанные действия для части массива начиная с 1 позиции до N1 шаг 2.

Русский

2013-09-22

30 KB

2 чел.

Алгоритмы обработки одномерных массивов.Сортировка.Сравнить 2 метода

Метод пызырька.

Основная идея сортировки (например, по возрастанию) методом пузырька очень простая. Предположим, что у нас N элементов в массиве и индекс каждого элемента лежит в промежутке от 1 до N.

Первый шаг сортировки методом пузырька

1)Сравниваем первый и второй элементы массива. Если первый элемент больше, чем второй, то меняем их местами.

2)Сравниваем второй и третий элементы массива. Если второй элемент больше, чем третий, то меняем их местами.

3)Cравниваем предпоследний (N-1) и последний (N) элементы массива. Если предпоследний элемент больше, чем последний, то меняем их местами.

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

Повторяем вышеуказанные действия для части массива, начиная с 1 позиции до N-1 (шаг 2).

Второй шаг сортировки методом пузырька

1(Сравниваем первый и второй элементы массива. Если первый элемент больше, чем второй, то меняем их местами.

2(Сравниваем второй и третий элементы массива. Если второй элемент больше, чем третий, то меняем их местам

3)Cравниваем элемент N-2 и элемент N-1 массива. Если (N-2)-й элемент больше, чем элемент N-1, то меняем их местами.

В результате предпоследний элемент в массиве у нас тоже будет на своем, "отсортированном" месте.

Метод включения

Одним из наиболее простых и естественных методов внутренней сортировки является сортировка с простыми включениями. Идея алгоритма очень проста. Пусть имеется массив ключей a[1], a[2], ..., a[n]. Для каждого элемента массива, начиная со второго, производится сравнение с элементами с меньшим индексом (элемент a[i] последовательно сравнивается с элементами a[i-1], a[i-2] ...) и до тех пор, пока для очередного элемента a[j] выполняется соотношение a[j] > a[i], a[i] и a[j] меняются местами. Если удается встретить такой элемент a[j], что a[j] <= a[i], или если достигнута нижняя граница массива, производится переход к обработке элемента a[i+1] (пока не будет достигнута верхняя граница массива).

Легко видеть, что в лучшем случае (когда массив уже упорядочен) для выполнения алгоритма с массивом из n элементов потребуется n-1 сравнение и 0 пересылок. В худшем случае (когда массив упорядочен в обратном порядке) потребуется n?(n-1)/2 сравнений и столько же пересылок. Таким образом, можно оценивать сложность метода простых включений как O(n2).

Дальнейшим развитием метода сортировки с включениями является сортировка методом Шелла, называемая по-другому сортировкой включениями с уменьшающимся расстоянием. Мы не будем описывать алгоритм в общем виде, а ограничимся случаем, когда число элементов в сортируемом массиве является степенью числа 2. Для массива с 2n элементами алгоритм работает следующим образом. На первой фазе производится сортировка включением всех пар элементов массива, расстояние между которыми есть 2(n-1). На второй фазе производится сортировка включением элементов полученного массива, расстояние между которыми есть 2(n-2). И так далее, пока мы не дойдем до фазы с расстоянием между элементами, равным единице, и не выполним завершающую сортировку с включениями. Применение метода Шелла к массиву, используемому в наших примерах, показано в таблице 2.2.

В общем случае алгоритм Шелла естественно переформулируется для заданной последовательности из t расстояний между элементами h1, h2, ..., ht, для которых выполняются условия h1 = 1 и h(i+1) < hi. Дональд Кнут показал, что при правильно подобранных t и h сложность алгоритма Шелла является O(n(1.2)), что существенно меньше сложности простых алгоритмов сортировки.


 

А также другие работы, которые могут Вас заинтересовать

83983. Взаимное расположение графиков линейных функций 23.28 KB
  Цели урока: ввести условия пересечения и параллельности графиков линейных функций; отработать умение строить графики линейной функции и прямой пропорциональности; развивать: 1 умение сравнивать выявлять закономерности обобщать; 2 познавательный интерес к предмету; 3 творческие способности учащихся...
83984. Главные члены предложения. Подлежащее и сказуемое 85.5 KB
  Тема урока: Главные члены предложения. Цель: создать условия для знакомства с существенными признаками главных членов предложения способствовать развитию умения определять главные члены в предложении развитию памяти внимания логического мышления устной и письменной речи формированию навыков грамотного письма создать условия для формирования активности социальной роли ученика. Предметные: находить главные члены основу предложения; обозначать графически грамматическую основу. Планируемые результаты: Предметные: находить основу ...
83985. Русская литература XIX века 59.5 KB
  Цели урока: Образовательные: повторение и обобщение изученного в разделе; закрепление полученных знаний. Развивающие: развитие творческого мышления, памяти, речи, внимания учащихся. Воспитательные: формирование чувства ответственности, сотрудничества, общительности, коммуникативных навыков.
83986. Наволочка с клапаном. Швы, используемые при фабричном пошиве бельевого изделия 21.21 KB
  Прежде чем начать урок я хочу вас познакомить с табелем в котором буду отмечать при помощи кружков вашу работу устные ответы а также вашу практическую работу Табель контроль Моя оценка пример Ф. Учитель Сегодня на уроке мы обобщим знания о постельном белье.
83987. Наследники славы дедов, отцов и старших братьев 105 KB
  Межпредметные связи: История Великие полководцы России История Великой Отечественной войны; Историческое краеведение Родной край связь истории страны с историей Калужского края Дзержинского района; ИВТ компьютерные проекты Патриоты Отечества От Кремля до...
83988. Закріплення навичок правопису власних і загальних іменників 172.5 KB
  Мета. Закріплювати навички правопису власних і загальних іменників, спонукати учнів вживати у мовленні нові мовознавчі терміни, розвивати пізнавальні інтереси, виховувати патріотичні почуття, любов і повагу до української мови.
83989. Узагальнення знань про частини мови 107 KB
  Загальнопізнавальні цілі: Повторити й узагальнити знання учнів про вивчені частини мови шляхом долання цікавих перешкод вирішення цікавих завдань. Вибирає частини мови. Знайдіть іменники Доберіть прикметник до іменника Визначте дієслова Розуміння Розрізняє суттєве у частинах мови.
83990. Урок вивчення синонімів. Слова, близькі за значенням (синоніми) 111 KB
  Мета: формувати поняття синоніми та їх значення у мові; розвивати мовне чуття, інтерес до мови; збагачувати мовлення виражальними засобами. Обладнання: малюнок дівчини-осені; листочки; індивідуальні карточки.
83991. Часи дієслів 659 KB
  Мета: Удосконалювати вміння та навички учнів розрізняти дієслова теперішнього, минулого і майбутнього часів; розвивати інтелектуальні здібності учнів, уяву, мислення, пам’яті, мовлення учнів, вміння послідовно висловлювати свої думки; формувати навички співпраці, розвивати комунікативні...