我正在学习 C++ 编程,但在使用基本数组排序程序时遇到了问题。我的代码似乎没有抛出任何编译器错误——VisualStudio2012 没有显示任何错误。此外,它看起来与我在教程 (learncpp.com) 中找到的代码一模一样。
输出应该在其选择排序的每一步都显示一个数组。但是,我不断得到不同的随机字母和数字输出。这是内存问题吗?或者是其他东西?
此外,注释掉的“if”循环是我如何在 1 行而不是 2 行代码中交换数组元素。这对排序有用吗?
#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;
}