直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的纪录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的纪录插入完为止,得到一个新的有序序列。
直接插入排序是由两层嵌套循环组成的。外层循环标识并决定待比较的数值。内层循环为待比较数值确定其最终位置。直接插入排序是将待比较的数值与它的前一个数值进行比较,所以外层循环是从第二个数值开始的。当前一数值比待比较数值大的情况下继续循环比较,直到找到比待比较数值小的并将待比较数值置入其后一位置,结束该次循环。
C#版代码如下:(假设从小到大排序)
private void btnSorting_Click(object sender, EventArgs e)
{
int[] num = new int[] { 45, 38, 66, 90, 88, 10, 25, 45 };
int i;
int j;
//移动最后交换:
for (i = 1; i <= num .Length -1; i++)
{
int temp = num[i]; //保存待插入的关键码
int position = i; //记录最终关键码将要插入的位置
for (j = i-1; j >=0 ; j--)
{
if (temp <num [j])
{
num[j + 1] = num[j]; //依次往后移,没有交换
position = j;
}
else
{
break;
}
}
num[position] = temp; //将关键码插入本趟比较的最终位置
//打印每一趟的结果:
txtShow.Text = txtShow.Text + "\r\n" + "第" + i + "趟排序结果:";
for (int k = 0; k < num .Length ; k++)
{
txtShow.Text = txtShow.Text + " " + num[k];
}
}
}
感谢您的阅读~