отсортировать масив
|
|
sleepes | Дата: Понедельник, 24.03.2008, 15:08 | Сообщение # 1 |
Сержант
Группа: Пользователи
Сообщений: 27
Статус: Offline
| нужно отсортировать одномерный масив таким образом Преобразовать массив, расположив сначала все отрицательные, затем все положительные числа (порядок следования чисел внутри группы не изменять).
|
|
| |
Ivin | Дата: Понедельник, 24.03.2008, 15:41 | Сообщение # 2 |
 Admin
Группа: Администраторы
Сообщений: 46
Статус: Offline
| sleepes, попробуй так: l:=1; for i:=1 to 10 do if(a[i]<0)then begin q:=a[l]; a[l]:=a[i]; a[i]:=q; l:=l+1; end; Должно работать, попробуй, только подставь свои переменные.
|
|
| |
sleepes | Дата: Понедельник, 24.03.2008, 19:38 | Сообщение # 3 |
Сержант
Группа: Пользователи
Сообщений: 27
Статус: Offline
| не работает вроде нормально(отрицательные числа выносит на перед), а вот в положительных числах меняет немного порядок((( к примеру если взять масив такой 2 1 0 1 -5 , поидеи должно получиться -5 2 1 0 1, оно олучается по другому -5 1 0 1 2
|
|
| |
Ivin | Дата: Вторник, 25.03.2008, 17:09 | Сообщение # 4 |
 Admin
Группа: Администраторы
Сообщений: 46
Статус: Offline
| sleepes, вот держи, правда исходник на MIDletPascal. Думаю переделать будет не так уж и трудно: program Vfcc; var a,a1,a2:array[1..10]of integer; l,j,i,q:integer; begin randomize; for i:=1 to 10 do a[i]:=random(10)-5; for i:=1 to 10 do drawText(''+a[i], 0, i*12); l:=0; j:=0; for i:=1 to 10 do if(a[i]<0)then begin l:=l+1; a1[l]:=a[i]; end else begin j:=j+1; a2[j]:=a[i]; end; for i:=1 to l+1 do a[i]:=a1[i]; for i:=l+1 to 10 do a[i]:=a2[i-l]; for i:=1 to 10 do drawText(''+a[i], 16, i*12); repaint; delay(15000); end.
|
|
| |
sleepes | Дата: Четверг, 27.03.2008, 21:25 | Сообщение # 5 |
Сержант
Группа: Пользователи
Сообщений: 27
Статус: Offline
| спс за помощь, прикольный выход нашел))), весьма оригинально
|
|
| |
Crazy-x7 | Дата: Понедельник, 07.04.2008, 17:52 | Сообщение # 6 |
 Рядовой
Группа: Пользователи
Сообщений: 5
Статус: Offline
| Мне тоже надо отсортировать массив, только по другому: Найти минимальный элемент массива и поставить его на место последнего элемента, а последний -на место минимального (т.е. поменять местами последний и минимальный элементы).
|
|
| |
Ivin | Дата: Понедельник, 07.04.2008, 18:36 | Сообщение # 7 |
 Admin
Группа: Администраторы
Сообщений: 46
Статус: Offline
| Crazy-x7, вроде так min:=1000; for i:=0 to 10 do begin if(a[i]<min)then begin min:=a[i];j:=i; end; end; q:=a[10]; a[10]:=a[j]; a[j]:=q; А вообще желательно и самим пробовать работать.
|
|
| |
Crazy-x7 | Дата: Понедельник, 07.04.2008, 20:46 | Сообщение # 8 |
 Рядовой
Группа: Пользователи
Сообщений: 5
Статус: Offline
| Немножко подправил алгоритм, и все ЗАРАБОТАЛО!!!!
|
|
| |
Ivin | Дата: Вторник, 08.04.2008, 17:54 | Сообщение # 9 |
 Admin
Группа: Администраторы
Сообщений: 46
Статус: Offline
| Crazy-x7, молдодец!
|
|
| |