gpt4 book ai didi

c# - 冒泡排序背后的逻辑

转载 作者:行者123 更新时间:2023-11-30 19:11:01 25 4
gpt4 key购买 nike

我正在做一个冒泡排序练习,我的感觉是它非常接近正确。就目前而言,我面临着一个永恒的循环。

错在哪里?

static void Main(string[] args)
{
int[] numbers = { 2, 4, 8, 5, 88, 55, 32, 55, 47, 8, 99, 120, 4, 32 };
int temporary;
bool sorted;
do
{
sorted = false;

for (int i = 0; i < numbers.Length - 1; i++)
{
int a = numbers[i];
int b = numbers[i + 1];
if (a > b)
{
temporary = a;
a = b;
b = temporary;

sorted = true;

}
}
Console.WriteLine("sorted");
} while (sorted == true);


foreach (int i in numbers)
{
Console.Write(i + " ");
}

}

最佳答案

C# 中更好的方法是使用通用的冒泡排序

public void BubbleSort<T>(IList<T> list);
{
BubbleSort<T>(list, Comparer<T>.Default);
}

public void BubbleSortImproved<T>(IList<T> list, IComparer<T> comparer)
{
bool stillGoing = true;
int k = 0;
while (stillGoing)
{
stillGoing = false;
for (int i = 0; i < list.Count - 1 - k; i++)
{
T x = list[i];
T y = list[i + 1];
if (comparer.Compare(x, y) > 0)
{
list[i] = y;
list[i + 1] = x;
stillGoing = true;
}
}
k++;
}
}

Jon Skeet 在他的 answer here 中给出了该算法的简要说明。 . “它使用任意比较器,但允许您省略它,在这种情况下,默认比较器用于相关类型。它将对 IList 的任何(非只读)实现进行排序,其中包括数组。”

希望对您有所帮助。

关于c# - 冒泡排序背后的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13740343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com