八大排序算法之插入排序算法

插入排序算法是对少量数据进行排序的有效算法,打扑克是排序算法的在生活中的典型应用,每次摸一张牌时,我们就按顺序把它放在合适的位置,最后从左到右就是从小到大的顺序(也可能从大到小)。接下来就用java代码实现:import java.util.Arrays;


public class Insorted {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[]a = {2,3,6,1,7};
Insorted in = new Insorted();
System.out.println(Arrays.toString(in.insorted(a)));
}
public int[] insorted(int []array){
int i;
int j; 
int key;
if(array == null || array.length == 0){
return null;
}
for(i = 1; i < array.length;i++){
j = i - 1;
key = array[i];
while(j >=0 && array[j] > key){
array[j+1] = array[j];
j--;
}
array[j+1] = key; //a[j]第一次进行右移时覆盖了a[j+1]值,是否造成了数据丢失?不会,a[j]的值存到key里
}
return array;
}
}

  问题1:a[i]第一次进行右移时覆盖了a[i+1]值,是否造成了数据丢失?

答:不会造成数据丢失,应为第一次右移前的i-1=j,此时a[i]的值存在了key里了。每次右移都为下一次右移或插入留出了位置,这就是插入排序的关键点所在。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值