|
|
|
новичок
      
участник
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; // до третьего елемента все фиксируется нормально, а дальше Абра-Кадабра какая-то
}
|
|
|
|
|
Forum 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
}
|
|
|
|