我写了一个应该排序数组的小程序。当我运行它时,它完成它的工作但似乎在数组中添加一个随机数。我也得到了标题中显示的错误。
#include "stdafx.h"
#include <iostream>
#include <algorithm>
void printArray(int nArray[], int nSize) {
using namespace std;
for (int jjj = 0; jjj <= nSize; jjj++)
cout << nArray[jjj] << " ";
cout << endl;
}
void sortArray(int nArray[], int nSize, bool bPrint) { // bPrint is used to wether print after every step or not
for (int nStartIndex = 0; nStartIndex < nSize; nStartIndex++) { // Durch jeden Teil des Arrays gehen
int nSmallestIndex = nStartIndex; // Den aktuellen Startindex als kleinsten nehmen
for (int nCurrentIndex = nStartIndex + 1; nCurrentIndex <= nSize; nCurrentIndex++) {
if (nArray[nCurrentIndex] < nArray[nSmallestIndex])
nSmallestIndex = nCurrentIndex;
}
using namespace std;
swap(nArray[nStartIndex], nArray[nSmallestIndex]);
if (bPrint) {
cout << "Swapping " << nArray[nStartIndex] << " and " << nArray[nSmallestIndex] << endl;
printArray(nArray, nSize);
}
}
}
int main() {
const int nSize = 7;
int nArray[nSize] = { 3, 1, 5, 8, 2, 4, 6 };
printArray(nArray, nSize);
sortArray(nArray, nSize, true);
std::cout << std::endl;
system("pause");
return 0;
}
答案 0 :(得分:0)
你有两次<= nSize
,它应该是< nSize
。在C ++中,如果数组的大小为N
,则有效索引为0
到N-1
。
答案 1 :(得分:0)
for循环条件不正确 - 应该是< nSize
而不是<= nSize
。这解释了为什么要打印一个额外的随机元素。
for (int jjj = 0; jjj < nSize; jjj++)
cout << nArray[jjj] << " ";