java中的插入排序法

3 篇文章 0 订阅

插入排序法(顾名思义,拿出数组中的一个元素跟其他元素比较,进行插入)

将数组中的第二个元素取出来跟前面的元素比较,如果前面的元素比较大就将两者交换(第一个元素不用比较,再前面没有元素)。第三个元素就跟第二第一的元素比较。以此类推。

实现代码

 

import java.util.*;
public class InsertionSort {
public static void main(String[] args) {
int[] arry={60,5,20,15,35,25};         //6
int temp;
int pre, cur;
   for (int i=1;i<arry.length;i++) {
       pre=i-1;          //arry[pre] 是前一个数组元素
       cur=arry[i];     //给cur赋于arry[i]的值,将cur当做要插入的元素
       while (pre>=0&&arry[pre]>cur) {  //如果pre>=0并且arry[i-1]>arry[i]
                                                          //(就是前一个数组的值大于后一个数组的值)
           arry[pre+1]=arry[pre];                  //如果要插入的元素小于第j个元素,就将第j个元素向后移动
           pre--;                                             //跟再前一个数组元素比较
       }
       arry[pre+1]=cur;                               // 直到要插入的元素不小于第i-1个元素,将cur插入到数组中
   }
System.out.println(Arrays.toString(arry));
}

}

时间复杂度

当最好的情况,也就是要排序是有序的,此时只有数据比较,没有数据移动,时间复杂度为O(n)。(例如: 5 10 15 20 30 60) 

当最坏的情况,即待排序的表是逆序的情况,时间复杂度O(n^2),直接插入排序法比冒泡和简单选择排序的性能要好一些。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值