c# - 冒泡排序问题 C#
问题描述
我有一个小问题要让我的冒泡排序算法在 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
. - 当它们还没有排序时,你打印
randomNumbers
得太早了。
代码:
bool getSwapper = true;
while (getSwapper) //Runs as long as there are numbers to sort
{
getSwapper = false; // <- reset getSwagger or we'll have an infinite loop;
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
}
}
} // <- You should end while here
// <- It's the right time now (when getSwapper is false) to print the results
for (int i = 0; i < randomNumbers.Length; i++)
{
Console.Write(" " + randomNumbers[i]); //lists the sorted numbers of the array
}
Console.ReadKey();
推荐阅读
- firebase - 'functions' 被赋值但从未使用过
- nginx - Nginx 在服务 mp4 时返回 206
- reactjs - map 不是数组 React 上的函数
- spyder - Jupyter-Lab 不显示新内部 HDD 的路径
- rust - 检查 Rust 宏中 bool 的值
- javascript - 在 NativeScript 中使用 HTTP 将 Post-data 发送到 TYPO3-Webservice
- reactjs - 我正在尝试使用 react 创建选项卡,但出现 TypeError: Cannot read property 'map' of undefined
- sql - 具有多个最大条件的 SQL 案例语句
- postgresql - Postgres 每小时的最大值与它发生的时间
- python - sgx enclave 的大型自愿上下文切换表示什么?