Сортировка элементов в массиве
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Сортировка элементов в массиве - 2004-11-04 19:18:07
|
|
|
Nickolas
Сообщений: 21
Оценки: 0
Присоединился: 2004-11-04 13:19:48
|
Привет всем! Вопрос по Pascal''ю. Помогите ,плиз, решить задачу. Нужно: 1)создать массив из n элементов 2)заполнить случайными числами в определённом диапазоне 3)отсортировать элементы по возрастанию 4)вывести полученный результат на экран.
С первыми двумя пунктами проблем не возникло, ну а вот с остальным… Никак не допираю как отсортировать массив:(. Слышал, что надо использовать флаги… Помогите, плиз, на вас последняя надежда:)
|
|
|
Сортировка элементов в массиве - 2004-11-04 21:55:50
|
|
|
Laex
Сообщений: 44
Оценки: 0
Присоединился: 2004-11-04 01:38:29
|
const
maxn = 100;
type
tarr = array [1..maxn] of integer;
var
arr : tarr;
n : integer;
procedure CreateArr(var arr : TArr;const n : integer);
var
i : integer;
begin
randomize;
for i := 1 to n do
arr := Random(100); <BR>end; <BR> <BR>procedure SortArr(var arr : TArr;const n : integer); <BR>var <BR> i,j : integer; <BR> ind : integer; <BR> x : integer; <BR>begin <BR> for i := 1 to n - 1 do begin <BR> ind := i; <BR> for j := i+1 to n do <BR> if arr[ind] < arr[j] then <BR> ind := j; <BR> x := arr[ind]; <BR> arr[ind] := arr; <BR> arr := x; <BR> end; <BR>end; <BR> <BR>procedure WriteArr(var arr : TArr; const n : integer); <BR>var <BR> i : integer; <BR>begin <BR> for i :=1 to n do <BR> write(arr, ' '); <BR> writeln; <BR>end; <BR> <BR>begin <BR> write('Input n : '); <BR> readln(n); <BR> if n <= maxn then begin <BR> CreateArr(arr,n); <BR> SortArr(arr,n); <BR> WriteArr(arr,n); <BR> end else <BR> writeln('Value of n is too large…'); <BR> readln; <BR>end.
|
|
|
Сортировка элементов в массиве - 2004-11-04 22:12:23
|
|
|
Maker
Сообщений: 647
Оценки: 0
Присоединился: 2004-03-11 18:50:32
|
А теперь и для консоли(паскаля), и попроще, и с оптимизацией (метод пузырька) ;)
program Project1; {$APPTYPE CONSOLE} uses SysUtils;
var x:array[1..100] of integer; a,i: integer; t: boolean;
begin { TODO -oUser -cConsole Main : Insert code here } randomize; for i:=1 to 100 do begin x:=50+random(50);<BR> end;<BR> for i:=1 to 100 do write(x,' ');<BR> writeln; writeln;<BR> <BR> t:=true;<BR> while t do begin<BR> t:=false;<BR> for i:=1 to 99 do if x>x[i+1] then begin<BR> a:=x;<BR> x:=x[i+1];<BR> x[i+1]:=a;<BR> t:=true;<BR> end;<BR> end;<BR><BR> for i:=1 to 100 do write(x,' ');<BR> writeln;<BR> read(a);<BR><BR>end.
|
|
|
Сортировка элементов в массиве - 2004-11-05 06:02:20
|
|
|
Nickolas
Сообщений: 21
Оценки: 0
Присоединился: 2004-11-04 13:19:48
|
Спасибо ребята! Неплохо было бы добавить комментарии в код, ну ладно, сам постараюсь разобраться.
|
|
|
Сортировка элементов в массиве - 2004-11-05 14:33:40
|
|
|
DeepThinker
Сообщений: 177
Оценки: 0
Присоединился: 2004-06-13 02:26:09
|
Мда ребят, с чувством юмора у вас все ок…. метод пузырька - просто ох%енная оптимизация блин, qsort отдыхает…
|
|
|
Сортировка элементов в массиве - 2004-11-15 23:48:20
|
|
|
***mR.PrOpEr***
Сообщений: 135
Оценки: 0
Присоединился: 2004-10-08 00:33:23
|
а почему именно МЕТОД ПУЗЫРЬКА?:??
|
|
|
Сортировка элементов в массиве - 2004-11-17 04:25:13
|
|
|
DeepThinker
Сообщений: 177
Оценки: 0
Присоединился: 2004-06-13 02:26:09
|
Название почему такое? А RTFM слабо, батенька? Это в ЛЮБОЙ книгу по программированию самого базового уровня написано. Потому что максимальные элементы массива всплывают вверх как пузырьки. Или как дохлые рыбки. :)
|
|
|
Сортировка элементов в массиве - 2004-11-22 19:20:11
|
|
|
ReynX
Сообщений: 2
Оценки: 0
Присоединился: 2004-11-22 19:03:03
|
Program MasSort; Uses Crt; Type Arr=Array[1..100] Of Byte; Var Ar:Arr; I,K:Byte; R:=Byte; Begin Randomize; For I:=1 To 100 Do Ar:=Random(255);<BR> For I:=100 DownTo 2 Do<BR> For K:=2 To I Do IfAr[K]<Ar[K-1] Then Begin<BR> R:=Ar[K];<BR> Ar[K]:=Ar[K-1];<BR> Ar[K-1]:=R;<BR> End;<BR>End.<BR><BR>Учись, студент. НЕТ, школьник. [sm=2.gif]
|
|
|
Сортировка элементов в массиве - 2004-11-22 19:23:34
|
|
|
ReynX
Сообщений: 2
Оценки: 0
Присоединился: 2004-11-22 19:03:03
|
Блин, вывод забыл!
После сортировки вставь: For I:=1 To 100 Do Write (Ar);<BR><BR>PS Если массив двумерный, действуй по аналогии. Просто добавь координату строк.
|
|
|
|
|