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

    插入排序好似我们打扑克牌时放牌一样,

    假如有这样一个数组:

    1.把数组分成两个部分,已排序区和未排序区,假如我们认为第一个数已排序

     

    2.将 index=1的和已排序区的末尾数进行比较,如果比2小就交换:

    3. 交换以后我们认为index 等于0和1的我们排好序了;然后继续5来放入已排序的扑克牌中

     再将index=3的扑克牌插入到已排序中

    4.1比5小,1和5交换:

     然后1比3小,又和3交换

     1和2比,1<2,交换:

     5.8比5大,不交换

     完成排序

    代码:

     1 package com.sort.demo;
     2 
     3 public class InsertSort extends Sort {
     4 
     5     @Override
     6     public void sort(int[] arr) {
     7         for (int i = 1; i < arr.length; i++) {
     8             for (int j = i; j >=1 && arr[j] < arr[j - 1]; j--) {
     9                 swap(arr, j, j - 1);
    10             }
    11         }
    12     }
    13 
    14     public static void main(String[] args) {
    15         InsertSort sort = new InsertSort();
    16         Test.test(sort);
    17     }
    18 
    19 }
    插入排序

    时间复杂度,如果是有序数组,则时间复杂度是O(N)

    如果是倒序,时间复杂度是O(n²)

    空间复杂度是O(1)

  • 相关阅读:
    odoo action方法
    linux命令
    删除方法odoo
    odoo权限
    odoo方法
    odoo自动更新表中数据
    odoo
    odoo之recoed.append()方法
    odoo明细表汇总数据
    假期周进度报告1
  • 原文地址:https://www.cnblogs.com/zqr99/p/11835684.html
Copyright © 2011-2022 走看看