ОБ
Олька Брыкова

Написал программу в qbasik, но есть 1 трабл

CLS
DIM a(5, 5)
PRINT "Massiv: ";
FOR i = 1 TO 5
FOR j = 1 TO 5
RANDOMIZE TIMER
a(i, j) = INT(RND * 100 - 50)
PRINT a(i, j);
NEXT
NEXT
o = 1
p = 1
max = a(o, p)
FOR i = 1 TO 5
FOR j = 1 TO 5
IF max < a(i, j) THEN
max = a(i, j)
END IF
NEXT
NEXT
PRINT
PRINT "__________"
PRINT "Max: "; max
min = a(o, p)
FOR i = 1 TO 5
FOR j = 1 TO 5
IF min > a(i, j) THEN
min = a(i, j)
END IF
NEXT
NEXT
PRINT
PRINT "__________"
PRINT "Min: "; min
FOR i = 1 TO 5
FOR j = 1 TO 5
FOR k = i + 1 TO 5
FOR l = j + 1 TO 5
IF a(k, l) < a(i, j) THEN
SWAP a(i, j), a(k, l)
END IF
NEXT
NEXT
NEXT
NEXT

PRINT
PRINT "___________"
PRINT "Sortirovka: ";
FOR i = 1 TO 5
FOR j = 1 TO 5
PRINT a(i, j);
NEXT
NEXT

Вот код, но есть одна проблема, он не корректно сортирует двухмерный массив, короче он его вообще не сортирует)
Подскажите, где я ошибаюсь, буду признателен)

Рома
Рома

Во-первых не нужно каждый раз вызывать команду
RANDOMIZE TIMER
вызовите её только перед циклом

Для поиска мин и макс элементов можно уложиться в один проход массива

max = a(o, p)
min = a(o, p)
FOR i = 1 TO 5
FOR j = 1 TO 5
IF max < a(i, j) THEN
max = a(i, j)
END IF
IF min > a(i, j) THEN
min = a(i, j)
END IF
NEXT
NEXT
PRINT
PRINT "__________"
PRINT "Max: "; max
PRINT
PRINT "__________"
PRINT "Min: "; min

Функция быстрой сортировки:
SUB DoSort (SortArray() AS INTEGER, Low AS INTEGER, High AS INTEGER)

DIM Lower AS INTEGER
DIM Higher AS INTEGER
DIM RandIndex AS INTEGER
DIM Partition AS INTEGER

'QuickSort works by picking a random "pivot" element in SortArray, then
'moving every element that is bigger to one side of the pivot, and every
'element that is smaller to the other side. QuickSort is then called
'recursively with the two subdivisions created by the pivot. Once the
'number of elements in a subdivision reaches two, the recursive calls end
'and the array is sorted.

IF Low < High THEN

' *** Only two elements in this subdivision ***
' *** Swap them if they are out of order, then end recursive calls: ***

IF High - Low = 1 THEN
IF SortArray(Low) > SortArray(High) THEN
SWAP SortArray(Low), SortArray(High)
END IF

ELSE

'*** Pick a pivot element at random, then move it to the end ***

RandIndex = INT(RND * (High - Low + 1)) + Low
SWAP SortArray(High), SortArray(RandIndex)
Partition = SortArray(High)
DO

'*** Move in from both sides towards the pivot element ***

Lower = Low
Higher = High
DO WHILE (Lower < Higher) AND (SortArray(Lower) <= Partition)
Lower = Lower + 1
LOOP

DO WHILE (Higher > Lower) AND (SortArray(Higher) >= Partition)
Higher = Higher - 1
LOOP

'*** If pivot element not reached, it means that ***
'*** two elements on either side are out of order, ***
'*** so swap them ***

IF Lower < Higher THEN
SWAP SortArray(Lower), SortArray(Higher)
END IF

LOOP WHILE Lower < Higher

'*** Move the pivot element back to its proper place in the array ***

SWAP SortArray(Lower), SortArray(High)

'*** Recursively call the SortArray sub ***
'*** Pass the smaller subdivision first to use less stack space ***

IF (Lower - Low) < (High - Lower) THEN
DoSort SortArray(), Low, Lower - 1
DoSort SortArray(), Lower + 1, High
ELSE
DoSort SortArray(), Lower + 1, High
DoSort SortArray(), Low, Lower - 1
END IF
END IF
END IF

END SUB

вызывается так:
DoSort a(), 1, 5

Похожие вопросы
Траблы с svchost'ом!
Написать программу в TurboPascal.
Помогите написать программу на С++
Написать программы в Pascal'e
Написать программу в java
Помогите написать программу в С#
трабл с компизом в дебиан...
помогите написать программы на языке паскаль 1. Написать программу, которая записывает в файл n чисел.2. Написать программу, которая считывает из файла числа и находит их сумму.3. Написать программу, которая считывает из файла числа и находит минимальное значение.
Написать программу на паскале
Написать программу пожалуйста