【发布时间】:2013-02-18 14:48:54
【问题描述】:
我用c#开发了一个“插入排序”的程序,代码接受元素的最大值和元素的值,然后一一显示排序值的步骤。
代码:
static void insertionSort(int[] ar)
{
for (int i = 1; i < ar.Length; i++)
{
int temp = ar[i];
int j = i - 1;
while (j >= 0 && ar[j] > temp)
{
ar[j + 1] = ar[j];
foreach (int val in ar)
Console.Write(val + " ");
Console.WriteLine();
j--;
}
}
}
static void Main(String[] args)
{
int ar_size;
ar_size = Convert.ToInt32(Console.ReadLine());
int[] ar = new int[ar_size];
for (int i = 0; i < ar_size; i++)
{
ar[i] = Convert.ToInt32(Console.Read());
}
insertionSort(ar);
Console.ReadKey();
}
我提供的示例输入:
5
2 4 6 8 3
输出结果:
谁能解释一下为什么会这样!
任何帮助将不胜感激! :)
【问题讨论】:
-
除非我今天下午真的很蠢交换它们,您只需覆盖较低的值。
-
如何实现? @Kobunite
-
您的 while 循环正在“腾出空间”,但您从未将
temp复制到其最终位置。 -
提示:用
int[] ar = { 4, 6, 1, 9, 7 };代替ReadLine()进行测试
标签: c# sorting insertion-sort