zoukankan      html  css  js  c++  java
  • 插入排序基础

    红宝书版本:

    public class Insertion 
    {
          public static void sort(Comparable[] a)
          {
              int N=a.length;
              for(int i =1;i<N;i++)
             {
                 for(int j=i;j>0&& less(a[j],a[j-1]);j--)
                    exch(a,j,j-1);
              }
      }
    }

    int数组:

    private static int[] insertSort(int[]arr){
    if(arr == null || arr.length < 2){
        return arr;
    }
    for(inti=1;i<arr.length;i++){
    for(intj=i;j>0;j--){
    if(arr[j]<arr[j-1]){
    //TODO:
    int temp=arr[j];
    arr[j]=arr[j-1];
    arr[j-1]=temp;
    }else{
    //接下来是无用功
    break;
    }
    }
    }
    return arr;
    }
    1. 插入排序的本质是从第二个元素开始,将当前位置上的元素同前一个元素比较,符合条件时即交换顺序。如果一个元素小于其前面的所有元素,该元素会一步一步地挪到第一位。
    2. 插入排序所需时间取决于元素的初始顺序,即接近有序的数组使用插入排序会很快。最好情况(完全有序)需要N-1次比较,0次交换;最坏情况(完全逆序),需要~N²/2次比较和交换。
  • 相关阅读:
    常用到的Linux基础命令
    adb linux
    adb,monkey,perfdog的区别
    postman中的变量与使用
    fiddler教程-抓包,弱网,断点,mock等
    linux启动服务和开机自启动设置
    .NET Framework 版本和依赖关系
    C#中的Guid
    EPL II 编程打印
    Button 类
  • 原文地址:https://www.cnblogs.com/Russel/p/5947656.html
Copyright © 2011-2022 走看看