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

    插入排序(Insertion Sort)

    插入排序的过程是

    • 首先假设队列左边的元素是已经排序过的元素

    • 依次遍历已排序过的元素右边的元素,将该元素与左边已排序的元素做比较,这样左侧已排序的元素个数就会依次增加

    • 重复第二步,直到所有的元素全部排序完成

    简单来说,插入排序很像是打扑克的理牌过程。我们手里的牌是已经排序过的,每次新抓一张牌,就将牌插入到手里已排序的牌中的合适位置,保证手里的牌一直是排序过的。

    • 最优时间复杂度:O(n) (升序排列,序列已经处于升序状态)
    • 最坏时间复杂度:O(n2)
    • 稳定性:稳定
    # C
    #include<stdio.h>
    insertsort(int *k,int n)             /*直接插入排序*/
    {
        int i,j;
        int temp;
        for(i=1;i<n;i++)
        {
            temp = k[i];                //将要比较的值先绶存起来留出一个空位,方便移动
            j = i - 1;
            while(j>=0 && k[j]>temp)    //比较直到出现比temp大的值,或向前找到头
            {
                k[j+1] = k[j];            //将前面的值往后移
                j--;
            }
            k[j+1] = temp;                 //插在a[j]的后面
        }
    }
    # Python while语句 13行代码
    def insert_sort(data):
        length = len(data)
        i = 1       # 从位置1开始向右遍历,因为我们假设位置0上的元素是已经排序好了的
        while i < length:
            j = i  # j代表当前已排序的数字的结束位置
            while j > 0:  # j < 0时证明已经遍历完了已排序的部分
                if data[j-1] > data[j]:
                    data[j], data[j-1] = data[j-1], data[j]  # 交换,找到合适的位置插入
                j -= 1  # 持续遍历已排序的部分
            i += 1   #下一个元素
    
    data1 = [6, 5, 3, 1, 8, 7, 2, 4]
    insert_sort(data1)
    print(data1)
    # Python for语句 8行
    def insert_sort(data):
        for i in range(1, len(data)):  # 从第二个位置,即下标为1的元素开始向前插入
            for j in range(i, 0, -1):  # 特别重要,注意range的参数,从第i个元素开始向前比较,如果小于前一个元素,交换位置
                if data[j-1] > data[j]:
                    data[j], data[j-1] = data[j-1], data[j]
    
    data1 = [6, 5, 3, 1, 8, 7, 2, 4]
    insert_sort(data1)
    print(data1)
  • 相关阅读:
    java中switch的用法以及判断的类型有哪些(Stringyteshortintchar枚举类型)
    B/S架构和C/S架构介绍
    Vue通信的10种方式
    Restful风格接口浅析
    浅析 http 接口
    Vue中 let 关键字
    vue中v-model详解
    安装RabbitMQ服务器及基本配置
    redis 面试题
    JSP页面中<%!%>与<%%>与<%=%>详解
  • 原文地址:https://www.cnblogs.com/nfgg/p/10604049.html
Copyright © 2011-2022 走看看