输出和输入不匹配气泡排序算法



尝试学习气泡排序算法,我有以下输入1, 9, 5, 4, 2

var arr = new int[] { 1, 9, 5, 4, 2 };
var rightVal = 0;
var leftVal = 0;
var leftIndex = 0;

for (int i = arr.Length - 1; i >= 0; i--)
{
var val = arr[i];
for (int j = i; j >= 0; j--)
{
if (j > 0)
{
leftIndex = j - 1;
}
else if (j == 0)
{
leftIndex = 0;
}
leftVal = arr[leftIndex];

if (val < leftVal)
{
arr[j] = leftVal;
arr[j - 1] = val;
}
}
}
}

但这会产生1,2,5,9,4的输出,我做错了什么?谢谢

var arr = new int[] { 1, 9, 5, 4, 2 };
var leftVal = 0;
for (int i = arr.Length - 1; i >= 1; i--)
{
var val = arr[i];
for (int j = i-1; j >= 0; j--)
{
leftVal = arr[j];
if (val < leftVal)
{
arr[i] = leftVal;
arr[j] = val;
val = leftVal;
}
}
}

最新更新