美文网首页
1.3 插入排序

1.3 插入排序

作者: 学不来的凡人 | 来源:发表于2021-04-12 07:42 被阅读0次

插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够秒懂。插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
插入排序和冒泡排序一样,也有一种优化算法,叫做拆半插入。

  1. 算法步骤
    将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
    从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)
  2. 动图演示


    image.gif
void insertion_sort(int arr[], int len){
    for (int i=1;i<len;i++){
            int key = arr[i];
            int j=i-1;
            while((j>=0) && (arr[j]>key)) {
                    arr[j+1] = arr[j];
                    j--;
            }
            arr[j+1] = key;
    }
}

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        int arr[] = {23,44,12,45,67,32,64};
        int len = (int)sizeof(arr)/sizeof(*arr);
        insertion_sort(arr, len);
        for (int i = 0; i < len; i++) {
            printf("%d\n",arr[i]);
        }
        
    }
    return 0;
}

相关文章

  • 1.3 插入排序

    插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都...

  • 常见排序算法及对应的时间复杂度和空间复杂度

    [TOC]1、插入排序1.1直接插入排序(从后向前找到合适位置后插入)1.2 二分法插入排序1.3 希尔排序2、选...

  • 1.基础算法

    1.插入排序: 2.循环不变式与插入排序的重要性 1.1初始化1.2保持1.3终止 3.伪代码中的约定: 1.缩进...

  • 排序算法总结

    n^2的算法:冒泡排序,选择排序,插入排序n^1.3的算法:希尔排序nlogn的算法:归并排序、快速排序 泛型的使...

  • 插入排序与合并排序原理与分析

    一、插入排序 1.1 伪代码实现 1.2 影响执行时间的因素 输入序列的次序 输入序列的大小 1.3 一些排序分析...

  • Java基本算法实现和区别

    算法实现 直接插入排序 时间复杂度:O(n2) 希尔排序 时间复杂度:O(n1.3) 冒泡排序 时间复杂度:O(n...

  • 1.3插入排序——希尔排序(缩小增量排序)

    基本思想:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全...

  • 算法-插入排序

    算 法:插入排序算法时间复杂度: 插入排序算法描述 插入排序伪代码 插入排序实现 插入排序算法概述 插入排...

  • java快速学习排序---插入排序

    1.java实现插入排序 (1)、图解插入排序 (2)、插入排序的思想 (3)、插入排序的代码实现

  • C艹之路 V1.3 谭书代码誊抄列表目录

    根据谭浩强的书籍,手敲的全部代码1.3a--1.3b--1.3c--1.3de--1.3fg--

网友评论

      本文标题:1.3 插入排序

      本文链接:https://www.haomeiwen.com/subject/tioikltx.html