• 插入排序基础


    红宝书版本:

    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次比较和交换。
  • 相关阅读:
    python之高阶函数
    [第二版]多线程的发送与接收
    基本函数与结构
    unp.h
    gdb调试命令
    System V共享内存区
    Posix 共享内存区
    System V信号量
    Posix 信号量
    记录锁
  • 原文地址:https://www.cnblogs.com/Russel/p/5947656.html
Copyright © 2020-2023  润新知