zoukankan      html  css  js  c++  java
  • 排序算法(二) 插入排序

    插入排序:

    从头到尾遍历数组

    将当前元素同当前元素之前的所有元素对比
    如果,当前元素小于其之前元素,将当前元素向前移,直到使当前元素之前的所有元素按大小排好序

    代码如下:

    package com.robert.paixu;
    
    /**
     * 插入排序
     * 从小到大排序
     * @author Administrator
     */
    public class InsertSortAlgorithm {
    	
    	public static void main(String[] args){
    		int[] arrays = {4,6,9,2,0,1,-5,10,-20,100,20,15};
    		insertSort(arrays);
    		display(arrays);
    	}
    	
    	/**
    	 * 插入排序
    	 */
    	private static void insertSort(int[] arrays){
    		//循环遍历数组
    		int currentIndex = 0;
    		int preIndex = 0;
    		for(int i=0;i<arrays.length;i++)
    		{
    			/**
    			 * 当前元素同当前元素之前的所有元素对比
    			 * 1,将当前元素向前移,直到使当前元素之前的所有元素按大小排好序
    			 */
    			currentIndex = i;
    			preIndex = i-1;
    			while(currentIndex!=0&&preIndex>=0){
    				if(arrays[currentIndex]<arrays[preIndex])
    				{
    					swap(arrays,currentIndex,preIndex);
    					currentIndex--;
    				}
    				else
    				{
    					break;
    				}
    				preIndex--;
    			}
    		}
    	}
    	
    	private static void swap(int[] arrays,int currentIndex,int preIndex){
    		int temp = arrays[currentIndex];
    		arrays[currentIndex] = arrays[preIndex];
    		arrays[preIndex] = temp;
    	}
    	
    	/**
    	 * 显示排序后的数组的值
    	 * @param arrays
    	 */
    	private static void display(int[] arrays){
    		
    		for(int i=0;i<arrays.length;i++){
    			System.out.print(arrays[i]+" ");
    		}
    	}
    	
    }
    
    
    
    

    在最好的情况下,即数组已经是有序的时候,插入排序的时间复杂度是O(n)

    数组越有序,需要做的工作就越少

    在最坏的情况下,该算法在最坏的情况下的时间复杂度为O(n^2)
     

  • 相关阅读:
    Castle Core 4.0.0 alpha001发布
    URL安全的Base64编码
    .NET Core RC2/RTM 明确了时间表
    一个免费的、跨平台的、开源音频编辑器Audacity
    Azure Service Fabric 开发环境搭建
    Microsoft Loves Linux
    微软将向Linux用户提供SQL Server程序
    微软收购Xamarin,你怎么看?
    我的梦幻2015,祝大家猴年吉祥,万事如意,幸福安康
    通用的序列号生成器库
  • 原文地址:https://www.cnblogs.com/mengjianzhou/p/5986853.html
Copyright © 2011-2022 走看看