我正在尝试按升序排列我的数组,但它给了我一个不同的值:
#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
为了防止出现问题,请更改:
i<5
到size-1
j<5
到size-1-i
j=i
到j=0
码:
int main ()
{
const int size = 5;
// 0 1 2 3 4
int arr[size] = {50,20,54,12,23};
for (int i=0; i<size-1; i++) //! bubble sort ascending order
{
for (int j=0; j<size-1-i; 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;
}