zoukankan      html  css  js  c++  java
  • 插入排序-Python与PHP实现版

    插入排序Python实现

    import random
    
    a=[random.randint(1,999) for x in range(0,36)]
    
    # 直接插入排序算法
    def insertionSort(a):
        for i in range(1,len(a)):
            # 若下标为i的元素小于下标为i-1的元素,则将下标为i的元素放到合适位置
            if a[i] < a[i-1]:
                tmp = a[i]
                j = i-1
                # 寻找a[i]的合适位置,并将a[i-1]至a[i]新位置的元素依次后移
                while j >= 0 and tmp < a[j]:
                    a[j+1] = a[j]
                    j = j-1
    
                # 将a[i]放到新位置
                a[j+1] = tmp
    
    insertionSort(a)
    print(a)

    插入排序PHP实现

    <?php
    // 生成待排序数组
    $a = [];
    for($i=0;$i<36;$i++){
        array_push($a,mt_rand(1,999));
    }
    shuffle($a);
    
    /**
     * 插入排序 insertion sort
     * @param  [type] $a 待排序数组的引用
     * @return null
     */
    function insertionSort(&$a){
        for($i = 1;$i<count($a);$i++){
            // 若下标为i的元素小于下标为i-1的元素,则将下标为i的元素放到合适位置
            if($a[$i] < $a[$i-1]){
                $tmp = $a[$i];
                // 寻找a[i]的合适位置,并将a[i-1]至a[i]新位置的元素依次后移
                for($j = $i-1; $j>=0 && $tmp<$a[$j];$j--)
                    $a[$j+1] = $a[$j];
                // 将a[i]放到新位置
                $a[$j+1] = $tmp;
            }
        }
    
    }
    
    insertionSort($a);
    var_dump($a);

    插入排序时间复杂度分析

    插入排序算法的时间复杂度为O(n2),但是插入排序法比冒泡和选择排序的性能更好。

  • 相关阅读:
    ODI ORA-00932: 数据类型不一致: 应为 -, 但却获得 CLOB
    oracle 执行计划简介
    oracle job定时执行存储过程详解
    ODI 目标表主键有序列的同步处理
    ODI 同义词问题
    U盘安装redhat Linux
    ODI ora_01653 表空间无法扩展
    C#使用JSON相关
    常用查询汇总
    EXCEL中汉字转拼音
  • 原文地址:https://www.cnblogs.com/praglody/p/6838669.html
Copyright © 2011-2022 走看看