所以我尝试做这个选择排序方法,读取你的数组并显示它从很大到最少你知道
" 这些是未排序的数组 29315
这些是排序数组 95321 "
问题是当我要求用户输入数组大小时#34;如果我输入6,我只能输入5个数字而不是6个,就像上面的例子一样。我在我的函数或For循环中面临的问题是什么阻止我输入第6个数字
PS:我试图想象一下动态数组然后排序的代码。我该怎么办?正如您在下面看到的,我让用户输入自己的阵列,但限制是n AKA 1000.我如何解决这个问题呢。谢谢#include <iostream>
using namespace std;
void SelectionSort(int *a, int k);
int main()
{
int j = 0;
int n = 1000; //limit of array
int k = 0; //number of array enters
cout << "please enter length of array" << endl;
cin >> k;
int *a = new int[n];
//int a[k];
for (int i = 0; i < k - 1; i++)
{
cout << "please enter the number in the array please" << endl;
cin >> j;
a[i] = j;
}
cout << "these are the unsorted array" << endl;
for (int i = 0; i < k -1; i++){
cout << a[i];
}
cout << endl;
SelectionSort(a, k);
cout << "these are the sorted array" << endl;
for (int i = 0; i < k -1; i++){
cout << a[i];
}
return 0;
}
//function
void SelectionSort(int *a, int k){
for (int i = 0; i < k - 1; i++){
int maxIndex = i;
for (int j = (i + 1); j < k; j++)
{
if (a[j] > a[maxIndex])
{
maxIndex = j;
}
}
int temp = a[i];
a[i] = a[maxIndex];
a[maxIndex] = temp;
}
}
答案 0 :(得分:0)
问题是当我要求用户“输入阵列的大小”时如果输入6,我只能输入5个数字而不是6个
for (int i = 0; i < k - 1; i++)
假设你在这里输入6,这个循环将从0到4运行,即五次。因此,您只能输入五个数字
您可以像下面这样修改此循环:
for (int i = 0; i < k; i++)
PS:我试图想象一下动态数组然后排序的代码。我该怎么办?正如您在下面看到的,我让用户输入他们自己的数组,但限制是n AKA 1000.我如何解决这个问题呢。谢谢
您的要求不明确。请重新陈述您的问题。正如评论中所提到的,我认为没有必要n
。您可以要求用户输入数组所需的元素数,即k
,然后您可以为这么多整数动态分配空间:
int *a = new int[k];