Simkara
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Посмотрите, пожалуйста, процедуру сортировки массива методом слияния. После сортировки массив получается не адекватным, добавляются рандомные числа. Не могу понять, в чем ошибка. Цитата: Procedure MergeSort(a,c:integer); var x,j,i,n1,n2:integer; rez,mas:array[1..1000] of integer; begin if c<=a then exit else begin x:=(a+c) div 2; MergeSort(a,x); MergeSort(x+1,c); n1:=a; n2:=x+1; for i:=a to c do begin if (n1<x+1) and ((n2>c) or (mas[n1]<mas[n2])) then begin rez[i]:=mas[n1]; inc(n1); end else begin rez[i]:=mas[n2]; inc(n2); end; end; for j:=a to c do begin mas[j]:=rez[j]; write(mas[j]:3); end; end; end; | если нужен, вот код изначального не отсортированного массива Цитата: var a:array[1..1000] of integer; n,i:integer; begin randomize; n:=4; for i:=1 to n do begin a[i]:=random(20)+1; write(a[i]:3); end; writeln; MergeSort(1,n); readln; end. | | Всего записей: 43 | Зарегистр. 26-11-2011 | Отправлено: 00:30 15-04-2012 | Исправлено: Simkara, 00:31 15-04-2012 |
|