Я изучаю программирование на С ++, и у меня возникают проблемы с базовой программой сортировки массива. Мой код, похоже, не бросает никаких ошибок компилятора - VisualStudio2012 не показывает никаких ошибок. Кроме того, это похоже на код, который я нашел в своем учебнике (learncpp.com).Сортировка массивов C++, ошибка памяти?
Вывод должен отображать массив на каждом шаге его сортировки. Однако я продолжаю получать разные выходы случайных букв и цифр. Это проблема памяти? Или что-то другое?
Кроме того, прокомментированный цикл «if» состоял в том, как бы я заменил элементы массива в 1 строке вместо двух строк кода. Будет ли это работать для сортировки?
#include "stdafx.h"
#include <iostream>
#include <algorithm>
int _tmain(int argc, _TCHAR* argv[])
{
using namespace std;
const int nSize = 6;
int anArray[nSize] = {30, 60, 20, 50, 40, 10};
for (int nStartIndex = 0; nStartIndex < nSize; nStartIndex++){
int nSmallestIndex = nStartIndex;
for (int nCurrentIndex = nSmallestIndex + 1; nCurrentIndex < nSize; nCurrentIndex++){
/* if (anArray[nCurrentIndex] < anArray[nSmallestIndex])
swap(anArray[nSmallestIndex], anArray[nCurrentIndex]);
*/
if (anArray[nCurrentIndex] < anArray[nSmallestIndex])
nSmallestIndex = nCurrentIndex;
}
swap(anArray[nStartIndex], anArray[nSmallestIndex]);
cout << "The current array: \t" << anArray << "\n";
}
return 0;
}
я несколько есть ощущение, что реальный код имеет обугленный isntead ИНТА для этого массива ... – PlasmaHH
Ну, делая 'соиЬ <<«Текущий массив: \ т»<< anArray < <"\ n"; 'не будет печатать сам массив. Он будет печатать ** адрес ** массива. В случае массива 'char' вы получите содержимое массива, но это только потому, что' << 'обрабатывает массивы' char' специально. –
Работа подкачки, просто не комментируйте ее и попробуйте. –