zoukankan      html  css  js  c++  java
  • java方式实现插入排序

    一、基本思想

      通过构建有序序列,从前往后扫描未排序序列,依此取出未排序序列元素,然后从后往前扫描有序序列,找到相应位置并插入。该算法一个进行n-1趟插入,每一趟插入要进行n-k(k为第k趟插入)次比较,所有插入排序的时间复杂度为O(n2),空间复杂度为O(1).

          

    二、实现步骤

    1. 首先将待排序序列的第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
    2. 从头到尾依次扫描未排序序列,将扫描到的每一个元素插入到有序序列相应的位置。

    三、图解

    四、代码实现

    public class JavaSort {
    	public static void main(String[] args) {
    		int a [] =new int []{1,5,4,10,6,29,5,20};
    		System.out.println("排序前的数组:"+Arrays.toString(a));
    		insertSort(a);
    		System.out.println("排序后的数组:"+Arrays.toString(a));
    	}
    	
    
    
    	/**
    	 * 
    	 * @param ary 要排序数组
    	 * @return  已排序的数组
    	 */
    	
    	public static int [] insertSort(int [] ary) {
    		for (int i = 1; i < ary.length; i++) {
    			int j=i;//j为要插入元素下标
    			int temp=ary[i];//暂存要插入的元素
    			while(j>0&&ary[j-1]>temp) {//将要插入元素与已排序的数组元素进行比较,找到要插入的位置
    				ary[j]=ary[j-1];
    				j--;
    			}
    			ary[j]=temp;//插入要插入的元素
    	
    			
    		}
    		return ary;
    	}
    }
    

    运行结果:

  • 相关阅读:
    javaEE web 系统安装时自定义初始化
    windows 安装绿色版mysql
    myeclipse 安装svn(subeclipsesite)插件
    Xcode连接 Git
    生成16位不重复编码
    百度工程师也犯低级错误(有心还是无意)?
    IBatis 映射文件 sql 中大于、小于等符号转义
    web项目文档总览
    银行卡号的校验
    身份证的校验
  • 原文地址:https://www.cnblogs.com/shareAndStudy/p/12452508.html
Copyright © 2011-2022 走看看