在C ++中使用for循环操作数组

时间:2013-01-17 22:43:45

标签: c++ arrays for-loop

我正在尝试编写一个选择排序算法(随机设置十个数字,由用户输入,并按升序输出列表)。我理解算法应该如何工作,并且认为我已经弄明白了,但是for循环中的某些东西并没有像我期望的那样工作,我不能为我的生活找出它是什么

以下是我遇到的问题的示例: 输入{9,8,7,6,5,4,3,2,1,0},输出{0,1,2,3,4,9,6,7,8,9}

无论我输入的是什么数字,第五个索引似乎总是关闭。但是,如果原始数字集具有任何给定数字的倍数,那么将会有其他错误难以确定。我希望在解决第五个索引问题之后,其他问题将得到解决,或者至少更容易确定。

然后是我的主要功能的全部内容(减去它实际上表示主要功能的部分)。

int arr[10];//array of integers input by user
int num;    //smallest number in array
int temp;   //temp variable for swapping numbers
int ind;    //index of where temp was found

cout << "Enter ten random integers: " << endl;
for(int i=0; i<10; i++)
{
    cout << "[" << i << "] = ";
    cin >> arr[i];
}

cout << endl;

for (int j=0; j<10; j++)
{
    num = arr[j];
    temp = arr[j];

    for (int k=j; k<10; k++) /*after this loop, temp should have lowest int and ind
                               should have its location*/
    {
        if(temp > arr[k])
        {
            temp = arr[k];
            ind = k;
        }
    }
    arr[j] = temp;
    arr[ind] = num;
}

for(int l = 0; l<10; l++)
{
    cout << arr[l] << " ";
}

1 个答案:

答案 0 :(得分:0)

temp = arr[0]; // You need to set it to sth diferent then 0

for(int i=0; i<10; i++)
{
    if(arr[k] < temp)
    {
           temp = arr[k];
           ind = k;
    }
}

完成了。

用于排序(123):

  for (i = 10; i > 0; i--)
  {
    for (j = 1; j <= i; j++)
    {
      if (numbers[j-1] > numbers[j])
      {
        temp = numbers[j-1];
        numbers[j-1] = numbers[j];
        numbers[j] = temp;
      }
    }
  }

反向(321)

  for (i = 10; i > 0; i--)
  {
    for (j = 1; j <= i; j++)
    {
      if (numbers[j-1] < numbers[j])
      {
        temp = numbers[j-1];
        numbers[j-1] = numbers[j];
        numbers[j] = temp;
      }
    }
  }