Помогите с программой сортировки отбором
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Помогите с программой сортировки отбором Expand / Collapse
Автор
Сообщение
07.05.2001 0:37
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 07.05.2001 0:31
Сообщ.: 1, Visits: 12
Ребята помогите разобраться с программой. Уже несколько дней сижу.Программа использует рекурсивную функцию, для сортировки. Я где-то видать облажался, но сам пока что не могу понять. Может тебе со стороны виднее будет. Зараннее благодарен.

С уважением Александр

#include <iostream.h>


void sort(int a[], int arraySize, int Index, int numbers);
void printArray(int a[], int Size);
void findMinimum(int a[], int arraySize, int begin);

main()
{

const int SIZE = 12;
int array[SIZE] = {12, 2, 97, 3, 10, 45, 72, 19, 88, 56, 13, 53};
int index, elements;

index = 0; elements = SIZE;

cout << "Unsorted array:" << endl;
printArray(array, SIZE);
cout << endl << endl;

sort(array, SIZE, index, elements);

cout << "Sorted array:" << endl;
cout << endl << endl;
printArray(array, SIZE);
cout << endl << endl;


return 0;
}
void sort(int a[], int arraySize, int Index, int numbers) // рекурсивная функция сортировки массива
{
if (numbers == 1)
return;
else {
findMinimum(a, arraySize, Index);
sort(a, arraySize, ++Index, --numbers);
}
}
void printArray(int a[], int Size)
{
for (int i = 0; i < Size; i++)
cout << a[i] << " ";
cout << endl << endl;
}
void findMinimum(int a[], int Size, int begin)// функция нахождения минимального елемента массива. Находит его и меняет с первым.
{
int min, index;

min = a[begin];
// cout << "Min = " << min << endl << endl;
for (int i = (begin + 1); i < Size; i++)
if (a[i] < min) {
min = a[i];
index = i;
}
// cout << "Min = " << "a[" << index << "] = " << a[index];
a[index] = a[begin]; // где-то тут программа застряет плюс ко всему, не получается зафиксировать номер текущего минимального елемент
a[begin] = min; // до третьего елемента все фиксируется нормально, а дальше Абра-Кадабра какая-то
}
Сообщ. #709182
08.05.2001 18:32
Forum Member

Forum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum Member

участник
Last Login: 29.07.2002 11:07
Сообщ.: 27, Visits: 298
Привет.

Ответ прост

void findMinimum(int a[], int Size, int begin)// функция нахождения минимального елемента массива. Находит его и меняет с первым.
{
int min, index;

index =begin; // ты выходиш за пределы массива, поэтому по умолчанию сделай индекс равным посылаемому значению

min = a[begin];
// cout << "Min = " << min << endl << endl;
for (int i = (begin + 1); i < Size; i++)
{
if (a[i] < min)
{
min = a[i];
index = i;
}
}
// cout << "Min = " << "a[" << index << "] = " << a[index];
a[index] = a[begin];
a[begin] = min
}

Сообщ. #709424
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 6:07