【发布时间】:2013-01-23 22:47:39
【问题描述】:
int[] arr = {800,11,50,771,649,770,240, 9};
int temp = 0;
for (int write = 0; write < arr.Length; write++)
{
for (int sort = 0; sort < arr.Length - 1; sort++)
{
if (arr[sort] > arr[sort + 1])
{
temp = arr[sort + 1];
arr[sort + 1] = arr[sort];
arr[sort] = temp;
}
}
Console.Write("{0} ", arr[write]);
}
我想要做的只是用这个数组进行简单的冒泡排序。我想弄清楚为什么排序搞砸了。
例如,这里的数组是{800,11,50,771,649,770,240, 9}:
下面是显示的内容:11, 50, 649, 9, 649, 770, 771, 800
我在想我可能会在比较中遗漏一些东西。
【问题讨论】:
-
你的外循环从头到尾,应该是从头到尾!你的内部循环也应该限制为 write 的值。
-
我希望这只是一个学习数组操作的练习?我想不出冒泡排序是“最佳”排序策略的任何应用程序。如果它只是用于演示/心理练习,那很好,但如果你使用的是真实世界的应用程序,也许你应该看看其他一些“排序”算法。
-
@Polity:我不认为这是正确的。正如答案所示,外循环是正确的。不过,关于内部循环,您是对的。
标签: c# arrays sorting bubble-sort