c ++:排序数组AKA试图修复选择排序

时间:2017-03-09 03:17:37

标签: c++ arrays sorting

所以我尝试做这个选择排序方法,读取你的数组并显示它从很大到最少你知道

" 这些是未排序的数组 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;
    }
}

1 个答案:

答案 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];