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)
     

  • 相关阅读:
    strcpy_s 和 strcat_s的用法 简单
    SAP更改商品的授权
    SAP设置默认的登录Client Code
    SAP安装windwos XP Sap的show 教程什么都看不到,的解决办法
    SAP用户管理
    sap 常用事务代码
    SAP-系统表
    随笔
    SAP如何学好SAP BASIS
    SAP IMG
  • 原文地址:https://www.cnblogs.com/mengjianzhou/p/5986853.html
Copyright © 2011-2022 走看看