我找到了两种冒泡算法,但我不确定哪个是正确的......
第一个例子:
for (int i = 1; i < input.Length-1; i++)
for (int j = 0; j < input.Length - 1 - i; j++)
if (input[j] > input[j + 1])
swap(input, j, j + 1);
第二个例子:
for (int i = 1; i < input.Length-1; i++)
for (int j = 0; j < input.Length - 1; j++)
if (input[j] > input[j + 1])
swap(input, j, j + 1);
维基百科示例
输入:5 1 4 2 8
第一个例子:6 个比较
第二个例子:12 个比较
第一关:
( 5 1 4 2 8 ) --> ( 1 5 4 2 8 ),从 5 > 1 开始交换
( 1 5 4 2 8 ) --> ( 1 4 5 2 8 ),从 5 > 4 开始交换
( 1 4 5 2 8 ) --> ( 1 4 2 5 8 ),从 5 > 2 开始交换
(1 4 2 5 8 ) --> (1 4 2 5 8 )
第二关:
( 1 4 2 5 8) --> ( 1 4 2 5 8)
( 1 4 2 5 8 ) --> ( 1 2 4 5 8 ), Swap since 4 > 2 <-- 示例 1 到此为止
(1 2 4 5 8) --> (1 2 4 5 8)
(1 2 4 5 8 ) --> (1 2 4 5 8 )
第三关
( 1 2 4 5 8) --> ( 1 2 4 5 8)
(1 2 4 5 8) --> (1 2 4 5 8)
(1 2 4 5 8) --> (1 2 4 5 8)
( 1 2 4 5 8 ) --> ( 1 2 4 5 8 ) <-- 示例 2 到此为止
编辑:当我说哪个是正确的时,我的意思是哪个是原始冒泡排序