【发布时间】:2019-02-25 04:24:09
【问题描述】:
我正在尝试按升序排列我的数组,但它给了我一个不同的值:
#include <iostream>
int main ()
{
const int size = 5;
// 0 1 2 3 4
int arr[size] = {50,20,54,12,23};
for (int i=0; i<5; i++) //! bubble sort ascending order
{
for (int j=i; j<5; j++)
{ // 50 20
if (arr[j] > arr[j+1])
{
int temp = arr [j+1];
arr [j+1] = arr [j];
arr [j] = temp;
}
}
}
for (int i=0; i<5; i++)
{
std::cout<<arr[i]<<" ";
}
return 0;
}
它不工作的事实,可能是循环结束时的空数组值(arr [6])弄乱了整体值吗?如果是这样,它应该能够排序到最后一个数组大小,但它会给出不同的输出
输出:20 12 0 23 50
【问题讨论】:
-
j+1超出了j = 4的范围。 -
将
arr[j+1]更改为arr[i]应该可以工作。 -
@jackw11111:那将不再是冒泡排序。 OTOH 现在也不是。
标签: c++ arrays bubble-sort