【发布时间】:2021-08-15 20:13:24
【问题描述】:
我有一个小问题要让我的冒泡排序算法在 C# 中正确运行,但我无法弄清楚我的错误。
例如。随机输入: 23,20, 17, 11, 17, 18, 4, 1, 16, 11 输出 20、17、11、17、18、4、1、16、11、23
public class BubbleSort
{
public static void Start()
{
Console.WriteLine("This is a BubbleSort Program!");
Console.WriteLine("Pease enter the amount of Numbers to sort:");
int userNumber = int.Parse(Console.ReadLine());
int[] randomNumbers = new int[userNumber]; //Create an array of a random lengh (user decides)
Random r = new Random();
for (int i = 0; i < userNumber; i++)
{
randomNumbers[i] = r.Next(1, 25); //fill array with random numbers between 1 and 25
}
for (int i = 0; i < userNumber; i++)
{
Console.Write(" " + randomNumbers[i]); //write down the Array numbers unsorted
}
Console.ReadKey();
Console.WriteLine("");
bool getSwapper = true;
while (getSwapper) //Runs as long as there are numbers to sort
{
for (int i = 1; i < randomNumbers.Length; i++)
{
int tempNumber = 0;
if (randomNumbers[i - 1] > randomNumbers[i])
{
tempNumber = randomNumbers[i - 1]; //safe the bigger number in a temp var
randomNumbers[i - 1] = randomNumbers[i]; //overwrites the bigger number with the smaller one
randomNumbers[i] = tempNumber; //overwrites the smaller with the bigger one
getSwapper = true; //sets swapper to true
}
}
for (int i = 0; i < randomNumbers.Length; i++)
{
Console.Write(" " + randomNumbers[i]); //lists the sorted numbers of the array
}
Console.ReadKey();
}
}
}
}
【问题讨论】:
-
您的问题是什么?你提到小问题,但你的问题是什么?重现该问题的示例输入。
-
您从未将
getSwapper设置为false。冒泡排序也需要多次通过才能对列表进行完全排序 -
你需要在for循环之前将getSwapper设置为false。
-
正如其他人所说,您无法重置交换器标志,并且当您需要多个时,您在(每个/一个)通过后输出“排序”输出
标签: c# .net algorithm bubble-sort