插入排序算法—直接插入排序

算法思路:假定这些数字的序是排好的,然后从头往后,如果有数比当前外层元素的值大,则将这个数的位置往后挪,直到当前外层元素的值大于或等于它前面的位置为止.这具算法在排完前k个数之后,可以保证a[1…k]是局部有序的,保证了插入过程的正确性.


package test;

import java.util.Scanner;

public class InserSort {

public static void main(String[] args) {

/*输入十个数字*/
int a[]=new int[10];
Scanner sc=new Scanner(System.in);
System.out.println(“请输入十个数字:”);
for(int i=0;i<10;i++){
a[i]=sc.nextInt();
}

/*排序的算法实现*/

for(int i=1;i<10;i++){
int j=i-1;
int k=a[i];
while(true){
if(a[j]>k){
a[j+1]=a[j];
j–;
if(j==-1)
break;
}
else
break;
}
a[j+1]=k;
}
//输出十个数字
System.out.println(“从小到大的排序为:”);

for(int i=0;i<10;i++){
System.out.println(a[i]);
}
}
}



插入排序时间复杂度:平均时间复杂度为 O(n^2) 最好情况:比较 n-1次,最坏情况比较n(n-1)/2

稳定性: 相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,所以插入排序是稳 定的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值