Сортировка Сортировкой числового массива называют расположение его элементов в возрастающем или убывающем по величине порядке. Сортировка символьного массива заключается в расположении элементов,например, по алфавиту или по длине строк.
Сортировка методом без возврата в начало Каждый шаг работы алгоритма - это просмотр массива с начала до конца, сравнение пар рядом стоящих элементов и смена мест элементов, не удовлетворяющих словиюсортировки. Исходный массив 6, 3, 8, 1, 4 После первого шага 3, 6, 1, 4, 8 После второго шага 3, 1, 4, 6, 8 После третьего шага 1, 3, 4, 6, 8 После четвертого шага 1, 3, 4, 6, 8 После пятого шага 1, 3, 4, 6, 8 В первом шаге происходит последовательно смена мест элементов, равных 6 и 3, затем 8 и 1, затем 8 и 4. Во втором шаге меняются местами числа 6 и 1, 6 и 4. В третьем шаге меняются местами числа 3 и 1. После третьего шага получаем упорядоченный массив по возрастанию. Можно заканчивать сортировку. Но алгоритм продолжает работать, если не вставить в него проверку окончания работы по отсутствию смены мест элементов.
Программа Ку Мир алг сортировка методом пузырька нач цел i, p, j,f целтаб a[1:5] нц для i от 1 до 5 a[i]:= irand(0,20) вывод 'a[',i,']= ',a[i],' ' кц нц для i от 1 до 5 нц для j от 1 до 4 если a[j] >a[j+1] то p := a[j] a[j]:= a[j+1] a[j+1] := p все кц вывод нс вывод ' Упорядоченный массив ' вывод нс нц для i от 1 до 5 вывод a[i],' ' кц кон Сортировка методом без возврата в начало
Программа Ку Мир Сортировка методом пузырька с использованием приема постановки флажка и выхода из цикла с помощью оператора выход по условию. алг сортировка методом пузырька нач цел i, p, j, f,k=0 целтаб a[1:15] нц для i от 1 до 15 a[i]:= irand(0,20) вывод a[i],' ' кц нц для i от 1 до 15 f:=0 нц для j от 1 до 1 4 если a[j] >a[j+1] то p := a[j] a[j]:= a[j+1] a[j+1] := p f:=1 все кц k:=k+1 если f = 0 то выход все кц вывод нс вывод ' Упорядоченный массив ', нс нц для i от 1 до 15 вывод a[i],' ' кц вывод 'количество внешних циклов', k кон Перед внутренним циклом ставится флажок, который перед началом цикла должен бить опущен: f = 0. Если во внутреннем цикле сортировки происходит смена мест хотя бы одной пары элементов, то флажок поднимается: f = 1. После выхода из внутреннего цикла проверяется состояние флажка. Если f =1, то сортировка продолжается. При этом, перед началом внутреннего цикла флажок опускается. Если после выхода из внутреннего цикла f =0, то это означает, что массив уже упорядочении происходит выход из цикла. Переменная k подсчитывает количество внешних циклов.
Программа VB-6.0 Dim a(5) As Integer Private Sub Form_Load() Show For i = 1 To 5 a(i) = InputBox(«введите элементы массива") Print a(i); Next For i = 1 To 5 For j = 1 To 4 If a(j) > a(j + 1) Then p = a(j): a(j) = a(j + 1): a(j + 1) = p Next j Next i Print Print Упорядоченный массив" Print For i = 1 To 5: Print a(i);: Next End Sub Сортировка методом без возврата в начало
Программа. Метод пузырька Dim a(5) As Integer Private Sub Form_Load() Show For i = 1 To 5 a(i) = InputBox("введите элементы массива") Print a(i); Next For i = 1 To 5 f = 0 For j = 1 To 4 If a(j) > a(j + 1) Then p = a(j): a(j) = a(j + 1): a(j + 1) = p: f = 1 Next j If f = 0 Then Exit For Next i Print Print Упорядоченный; массив; "" Print For i = 1 To 5: Print a(i);: Next Print End Sub
Сортировка выбором Исходный массив 6, 3, 8, 1, 4 После первого шага 1, 6, 8, 3, 4 После второго шага 1, 3, 8, 6, 4 После третьего шага 1, 3, 4, 8, 6 После четвертого шага 1, 3, 4, 6, 8 Сортировка заключается в поиске минимального по величине элемента массива. Это выполняется сначала во всем массиве, затем в части массива, с каждым шагом уменьшающейся на один элемент. На место этого элемента и записывается найденный в шаге минимальный элемент
Программа Ку Мир алг сортировка 'выбором' нач цел i, p, j целтаб a[1:5] нц для i от 1 до 5 a[i]:= irand(0,20) вывод 'a[',i,']= ',a[i],' ' кц нц для i от 1 до 4 нц для j от i+1 до 5 если a[i] > a[j] то p := a[i] a[i]:= a[j] a[j] := p все кц вывод нс вывод ' Упорядоченный массив ' вывод нс нц для i от 1 до 5 вывод a[i],' ' кц кон
Программа VB 6.0 Dim a(5) As Integer Private Sub Form_Load() Show For i = 1 To 5 a(i) = InputBox(введите элемент массива") Print a(i); Next For i = 1 To 4 For j = i + 1 To 5 If a(i) > a(j) Then p = a(i): a(i) = a(j): a(j) = p Print a(i) Next j Next i Print Print Упорядоченный массив" Print For i = 1 To 5: Print a(i);: Next End Sub
Выход их цикла по условию Перед внутренним циклом ставится флажок f=0. Если во внутреннем цикле сортировки происходит смена хотя бы одной пары элементов, то флажок принимает значение f=1. После выхода из внутреннего цикла проверяется состояние флажка. Если f=1, то продолжается сортировка массива. Если f=0, то это означает,что элементы не менялись местами, т.е. массив уже упорядочен. При этом выполняется оператор выхода из цикла EXIT FOR