【发布时间】:2023-04-01 19:25:01
【问题描述】:
我正在尝试冒泡排序。有 5 个元素,数组未排序。冒泡排序的最坏情况应该是 O(n^2)。
作为一个例子,我正在使用
A = {5, 4, 3, 2, 1}
在这种情况下,比较应该是 5^2 = 25。 使用手动验证和代码,我得到的比较计数是 20。 以下是冒泡排序实现代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SortingAlgo
{
class Program
{
public static int[] bubbleSort(int[] A)
{
bool sorted = false;
int temp;
int count = 0;
int j = 0;
while (!sorted)
{
j++;
sorted = true;
for (int i = 0; i < (A.Length - 1); i++)
{
count++;
if(A[i] > A[i+1])
{
temp = A[i];
A[i] = A[i+1];
A[i+1] = temp;
sorted = false;
}
Console.Write(count + ". -> ");
for(int k=0; k< A.Length; k++)
{
Console.Write(A[k]);
}
Console.Write("\n");
}
}
return A;
}
static void Main(string[] args)
{
int[] A = {5, 4, 3, 2, 1};
int[] B = bubbleSort(A);
Console.ReadKey();
}
}
}
输出如下
- -> 45321
- -> 43521
- -> 43251
- -> 43215
- -> 34215
- -> 32415
- -> 32145
- -> 32145
- -> 23145
- -> 21345
- -> 21345
- -> 21345
- -> 12345
- -> 12345
- -> 12345
- -> 12345
- -> 12345
- -> 12345
- -> 12345
- -> 12345
知道为什么数学不是 25 吗?
【问题讨论】: