插入排序_Python与PHP的实现版(推荐)


Posted in Python onMay 11, 2017

插入排序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),但是插入排序法比冒泡和选择排序的性能更好。

以上这篇插入排序_Python与PHP的实现版(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中map和列表推导效率比较实例分析
Jun 17 Python
python定时关机小脚本
Jun 20 Python
Python中垃圾回收和del语句详解
Nov 15 Python
详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
Apr 17 Python
python3.4 将16进制转成字符串的实例
Jun 12 Python
PowerBI和Python关于数据分析的对比
Jul 11 Python
Python 硬币兑换问题
Jul 29 Python
tensorflow将图片保存为tfrecord和tfrecord的读取方式
Feb 17 Python
使用python3 实现插入数据到mysql
Mar 02 Python
Django serializer优化类视图的实现示例
Jul 16 Python
Pythonic版二分查找实现过程原理解析
Aug 11 Python
Pycharm新手使用教程(图文详解)
Sep 17 Python
Python实现计算两个时间之间相差天数的方法
May 10 #Python
Python开发的实用计算器完整实例
May 10 #Python
Python只用40行代码编写的计算器实例
May 10 #Python
Python实现脚本锁功能(同时只能执行一个脚本)
May 10 #Python
python 3.5下xadmin的使用及修复源码bug
May 10 #Python
Python遍历文件夹和读写文件的实现方法
May 10 #Python
python中requests小技巧
May 10 #Python
You might like
PHP调用Webservice实例代码
2011/07/29 PHP
php购物车实现代码
2011/10/10 PHP
PHP输出日历表代码实例
2015/03/27 PHP
php数据访问之查询关键字
2016/05/09 PHP
JQuery 初体验(建议学习jquery)
2009/04/25 Javascript
javascript 通用简单的table选项卡实现
2010/05/07 Javascript
JS获取当前网址、主机地址项目根路径
2013/11/19 Javascript
js控制表单不能输入空格的小例子
2013/11/20 Javascript
js事件监听机制(事件捕获)总结
2014/08/08 Javascript
jquery 插件实现多行文本框[textarea]自动高度
2015/03/04 Javascript
JSONP之我见
2015/03/24 Javascript
checkbox 选中一个另一个checkbox也会选中的实现代码
2016/07/09 Javascript
关于Javascript回调函数的一个妙用
2016/08/29 Javascript
判断横屏竖屏(三种)
2017/02/13 Javascript
js实现放大镜特效
2017/05/18 Javascript
javascript 玩转Date对象(实例讲解)
2017/07/11 Javascript
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
2017/09/06 NodeJs
vue2组件之select2调用的示例代码
2017/10/12 Javascript
对Vue table 动态表格td可编辑的方法详解
2018/08/28 Javascript
Node.js系列之发起get/post请求(2)
2019/08/30 Javascript
js键盘事件实现人物的行走
2020/01/17 Javascript
深入理解webpack process.env.NODE_ENV配置
2020/02/23 Javascript
JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记
2020/07/15 Javascript
详解python3实现的web端json通信协议
2016/12/29 Python
python2与python3爬虫中get与post对比解析
2019/09/18 Python
使用Keras实现Tensor的相乘和相加代码
2020/06/18 Python
通过自学python能找到工作吗
2020/06/21 Python
解决django migrate报错ORA-02000: missing ALWAYS keyword
2020/07/02 Python
CSS3中伪元素::before和::after的用法示例
2017/09/18 HTML / CSS
芬兰设计商店美国:Finnish Design Shop US
2019/03/25 全球购物
员工工作表扬信范文
2014/01/13 职场文书
会计电算化毕业生自荐信
2014/03/03 职场文书
三方协议书
2015/01/27 职场文书
幼儿园小班个人总结
2015/02/12 职场文书
元素水平垂直居中的方式
2021/03/31 HTML / CSS
nginx代理实现静态资源访问的示例代码
2022/07/07 Servers