русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Суть «пузырькового» метода


Дата добавления: 2013-12-23; просмотров: 1433; Нарушение авторских прав


Алгоритмы сортировки массивов

Существует много методов сортировки данных, все эти методы можно отнести к одному из следующих классов: 1) перестановка

2) отбор

3) вставка

 

Преимущества при выборе метода:

 

- скорость исполнения сортировки

- многие методы сортировки обладают уникальными характеристиками, влияющими на их применимость в том или ином случае

 

Критерии, используемые при выборе сортировки:

 

- средняя скорость сортировки

- скорость сортировки в наилучшем и наихудшем случаях

- естественно или нет поведение алгоритма

- выполняет ли он сортировку элементов с совпадающими ключами

 

Скорость сортировки зависит от количества выполняемых сравнений и следующих за ними перестановок.

Наилучшая и наихудшая скорость важны в том случае, если вы имеете основание ожидать повторения одной их этих ситуаций.

Очень часто при хорошей средней скорости алгоритмы обладают неприемлемой наихудшей.

Под естественностью поведения понимают следующее: если список уже упорядочен, алгоритм должен выполнять минимальное количество операций; если не упорядочен, алгоритм выполняет больший объем работы; и большую работу он должен выполнять, если список отсортирован в обратном порядке.

Самым известным методом сортировки является - “ пузырьковый” метод.


 

Пусть элементы массива а: 8 3 6 4 2

1 2 3 4 5

Пусть i=1, тогда асравнивают, если да, то перестановка.

p=а

а=2

а=p

если а>a, то снова перестановка и т.д.

т.е. 3 8 6 4 2

. . . . . . .

если а, снова перестановка.

т.е. 2 8 6 4 3

На первом месте должен стоять самый “легкий” элемент.

Для i=2.

Организуется цикл для i=1,n-1

цикл для j=i+1,n

если а>a, то перестановка p=a

а=a

a=p

Пример:

#include <stdio.h>

#include <conio.h>



#define size 50

void main( )

{ // Сортировка массивов различными методами.

int i, j, n;

float a[size], b[size], c[size], d[size];

float prom; // Промежуточная переменная.

crscr( );

// Ввод массива.

printf (“\n Введите размер массива n=”);

scanf (“%d”,&n);

printf (“\n Введите элементы массива:\n”);

for (i=0; i<n; i++)

scanf (“%f”,&a[i]);

printf (“\n Исходный массив:\n”);

for (i=0; i<n; i++)

printf (“%.2f “,a[i]);

// Копируем массив а в b,c,d.

for (i=0; i<n; i++)

b[i]=c[i]=d[i]=a[i];

. . . } // Печать массивов b, c, d.

// Простая версия “пузырьковой” сортировки.

for (i=0; i<n-1; i++)

for (j=i+1; j<n; j++)

if ( a[i]>a[j] )

{ prom=a[i];

a[i]=a[j];

a[j]=prom;

}

printf (“\n \t Отсортирован массив а: \n”);

. . . . .}Печать массивов.

 

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

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

Всего сравнений: , где n-количество элементов.

В наилучшем случае количество перестановок = 0.

 

Количество перестановок в среднем случае:

В худшем случае:

Пузырьковая сортировка называется n-квадратичным алгоритмом, т.к. время выполнения пропорционально квадрату количества элементов массива, поэтому при работе с большими массивами не используется.

 

 



<== предыдущая лекция | следующая лекция ==>
Алгоритм обработки массива | Метод Шелла


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.133 сек.