русс | укр

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

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

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

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


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

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


Дата добавления: 2014-11-27; просмотров: 471; Нарушение авторских прав


1. Ввести n чисел.

2. Для номера_просмотра от 1 до n-1 выполнить

2.1. Для номера_числа (i) от 1 до n-1 выполнить

Если число[i] > число[i+1], то поменять их местами.

3. Вывести отсортированную последовательность.

4. Закончить.

 

Программа для этого алгоритма будет иметь вид

 

Program Sort;

Const

Nmax = 100;

Var

X : Array [1..Nmax] Of Real;

A : Real;

n, k, i : Integer;

 

Begin

Writeln('Введите количество чисел');

Readln(n);

Writeln('Введите массив чисел');

For i := 1 To n Do

Read (X[i]);

{ Сортировка }

For k := 1 To n-1 Do

For i := 1 To n-1 Do

If X[i] > X[i+1] Then

Begin

A:=X[i];

X[i]:=X[i+1];

X[i+1]:=A

End;

Writeln('Отсортированный массив чисел:');

For i:=1 To n Do

Write (X[i]);

End.

 

Глубину просмотра можно уменьшать, основываясь на том, что большие числа "опускаются" вниз (в конец последовательности) и затем не переставляются:

For k := 1 To n-1 Do

For i := 1 To n-k Do

If X[i] > X[i+1] Then

. . . . . . . .

Сокращение количества просмотров улучшает временные характеристики метода. Из алгоритма можно понять, что если на одном из просмотров не было перестановок, то их не будет и потом – данные уже отсортированы, процесс сортировки следует закончить. Такой подход дает значительную экономию времени при работе с большими "почти отсортироваными" массивами. Примером такого массива может быть упорядоченный по алфавиту список сотрудников фирмы, на которую время от времени принимают новых работников.

Приведем алгоритм для этого метода.

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



 

1. Ввести массив.

2. Перестановка_есть = истина.

3. Номер_просмотра = 1.

4. Пока перестановка_есть = истина выполнить

сортировку массива.

5. Вывести результат.

6. Закончить.

 

Уточним отдельные пункты этого алгоритма.

1. Ввести массив.

2. Перестановка_есть = истина

3. Номер_просмотра (к)=1

4. Пока перестановка_есть = истина выполнить

4.1. Количество_перестановок = 0

4.2. Для i от 1 до n-k выполнить

Если x[i] > x[i+1], то

4.2.1. поменять x[i] и x[i+1]

4.2.2. количество_перестановок = количество_перестановок + 1

4.3. Если количество_перестановок = 0, то

перестановка_есть =ложь.

4.4. к=к+1

5. Для i от 1 до n выполнить

Вывести x[i].

6. Закончить.

 

Программа для этого алгоритма будет иметь вид

 

Program SortUsk;

Const

Nmax = 100;

Var

X : Array [1..Nmax] Of Real;

A : Real;

P : Boolean;

L, K, I, N : Integer;

Begin

Writeln('Введите количество чисел');

Readln(n);

Writeln('Введите массив чисел');

For i := 1 To n Do

Read(X[i]);

P := True; {Перестановка есть}

K := 1; {Номер просмотра}

While P Do

Begin

L:=0; {Кол. перестановок}

For i := 1 To n-k Do

If X[i] > X[i+1] Then

Begin

A := X[i];

X[i]:=X[i+1];

X[i+1]:=A;

L:=L+1

End;

If L=0 Then

P:=False;

k:=k+1;

End;

Writeln('Отсортированный массив чисел');

For i := 1 To n Do

Write(X[i]);

End.

 



<== предыдущая лекция | следующая лекция ==>
Задача сортировки | Обработка многомерных массивов


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


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

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

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


 


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

 
 

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

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