java插入排序算法及示例


插入排序是一种简单直观的排序算法,其工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序,即只需用到O(1)的额外空间的排序。在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。

插入排序的主要步骤:

  1. 把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素。
  2. 排序过程中每次从无序表中取出第一个元素,在有序表中从后往前进行比较。
  3. 将它插入到有序表中的适当位置,使之成为新的有序表。

插入排序的时间复杂度为O(N),最坏的情况是待排序数组是逆序的,此时需要比较次数最多,总次数记为:1+2+3+…+N-1,所以,插入排序最坏情况下的时间复杂度为O(N^2)。平均来说,A[1..j-1]中的一半元素小于A[j],一半元素大于A[j]。插入排序在平均情况运行时间与最坏情况运行时间一样,是输入规模的二次函数。

插入排序的空间复杂度为常数阶O(1)。

package test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.PriorityQueue;

/**
 * 数组操作
 * @author Administrator
 *
 */
public class ArrayOpe {

    public static void main(String[] args) {
 
        int[] iArray1 = new int[]{5, 3, 4, 1, 2};  //申明int数组,并初始化值
 
        
        int[] iArray3 = insertSort(iArray1);//调用插入排序
        System.out.println("数组值转字符串:"+Arrays.toString(iArray3)); 
    }
    
    /**
     * 插入排序
     * @param args
     * @return
     */
    public static int[] insertSort(int[] args) {//插入排序算法
        for(int i=1;i<args.length;i++){
            for(int j=i;j>0;j--){    
                if (args[j]<args[j-1]){
                    int temp=args[j-1];
                    args[j-1]=args[j];    //将比args[j]大的数据向后移 
                    args[j]=temp;
                }else break;
            }
        }
        return args;
    }

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值