Why will this program not sort the array?
我知道在C语言中有一个排序函数可以将数组排序成正确的顺序,但是出于原因,我需要使用自己的代码。
我已经想出了这个办法,有些数字会移动,但它永远不会完全分类。有人知道为什么吗?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | static void Main(string[] args) { int[] arraySort = { 2, 5, 7, 3, 6, 3 }; int save; bool sorted = false; while(sorted == false) { for (int i = 0; i < (arraySort.Length - 1); i++) { sorted = true; if (arraySort[i] > arraySort[i + 1]) { save = arraySort[i]; arraySort[i] = arraySort[i + 1]; arraySort[i + 1] = save; sorted = false; } } } for (int i = 0; i < arraySort.Length; i++) { Console.WriteLine(arraySort[i]); } } |
我的输出结果是:
2 3 5 3 6 7
每次迭代时都将sorted设置为true,您需要在for循环之外的while和for之间执行sorted=true。
1 2 3 4 5 6 7 8 9 10 11 12 13 | while (sorted == false) { sorted = true;// here seems like the right place! for (int i = 0; i < (arraySort.Length - 1); i++) { if (arraySort[i] > arraySort[i + 1]) { save = arraySort[i]; arraySort[i] = arraySort[i + 1]; arraySort[i + 1] = save; sorted = false; } } } |
您在for循环中设置了
所以只要倒数第二个条目小于最后一个条目,它就会停止。验证外部循环时忽略所有其他检查
为什么不直接做:
1 | arraySort = arraySort.OrderBy(x => x).ToArray(); |