用C/C++编程实现插入排序

插入排序算法思想:和前俩种排序不同,插入排序在排序过程中是局部有序,随着插入项的增多,有序部分的项的位置会发生改变,而冒泡排序和选择排序每轮确定的项数的位置是永远不变的。在首轮,选择第二项作为插入项,然后取出这一项放在一个变量中,和前一项比较而且小,则前一项后移到第二项的位置,然后第二项也就是插入项放在前一项的位置,第二轮选择第三项作为插入项然后取出和前一项也就是第二项比较如果小,第二项后移到插入项,然后插入相在和第一项比较如果小,则第一项后移到第二项,插入项放在第一项,以此类推

public void insertSort() 
{
// 定义临时变量
int temp = 0;
// 外层循环控制次数
for (int i = 1; i < array.length; i++) 
{
//把插入项的数值赋值给临时变量
temp = array[i];
int j = i;
// 判断前一项是否比插入项大
while (j > 0 && array[j - 1] > temp)
{
array[j] = array[j - 1];
j--;
}
// 把插入项的数组值赋值给数组首项
array[j] = temp;
}

}

具体实例说明:

 

只取数组前4项进行说明,{23,63,19,8},第一次循环,i=1,j=1;array[0]<63,所以第一轮顺序不变;

第二次循环,i=2,j=2;array[1]>19,所以array[2]=63,内部继续循环,j=1;array[0]>19,所以array[1]=23,内部循环结束,array[0]=19.此时顺序为{19,23,63,8};

第三次循环,i=3,j=3;array[2]>8,所以array[3]=63,内部循环继续,i=2,j=2;array[1]>8所以array[2]=23,内部继续循环,j=1;array[0]>8,所以array[1]=19,内部循环结束,array[0]=8.此时顺序为{8,19,23,63}.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值