插入排序_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字符串加密解密的三种方法分享(base64 win32com)
Jan 19 Python
python从入门到精通(DAY 1)
Dec 20 Python
使用Mixin设计模式进行Python编程的方法讲解
Jun 21 Python
简单谈谈Python中的反转字符串问题
Oct 24 Python
利用pyinstaller或virtualenv将python程序打包详解
Mar 22 Python
python 全局变量的import机制介绍
Sep 07 Python
对pandas replace函数的使用方法小结
May 18 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
Mar 19 Python
基于TensorFlow的CNN实现Mnist手写数字识别
Jun 17 Python
浅谈keras使用预训练模型vgg16分类,损失和准确度不变
Jul 02 Python
Python测试框架:pytest学习笔记
Oct 20 Python
Python学习之迭代器详解
Apr 01 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里面的抽象类
2010/01/28 PHP
PHP警告Cannot use a scalar value as an array的解决方法
2012/01/11 PHP
实例介绍PHP的Reflection反射机制
2014/08/05 PHP
thinkphp的URL路由规则与配置实例
2014/11/26 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
2015/12/21 PHP
phpcms实现验证码替换及phpcms实现全站搜索功能教程详解
2017/12/13 PHP
THINKPHP3.2使用soap连接webservice的解决方法
2017/12/13 PHP
javascript 不间断的图片滚动并可点击
2010/01/15 Javascript
为radio类型的INPUT添加客户端脚本(附加实现JS来禁用onClick事件思路代码)
2010/11/11 Javascript
jquery限定文本框只能输入数字(整数和小数)
2016/01/08 Javascript
JS动态遍历json中所有键值对的方法(不知道属性名的情况)
2016/12/28 Javascript
前端编码规范(3)JavaScript 开发规范
2017/01/21 Javascript
详解webpack es6 to es5支持配置
2017/05/04 Javascript
通过一个简单的例子学会vuex与模块化
2017/11/22 Javascript
vue底部加载更多的实例代码
2018/06/29 Javascript
在vue中使用Autoprefixed的方法
2018/07/27 Javascript
微信小程序实现留言板(Storage)
2018/11/02 Javascript
浅谈在Vue.js中如何实现时间转换指令
2019/01/06 Javascript
Vue表单提交点击事件只允许点击一次的实例
2020/10/23 Javascript
python3.5实现socket通讯示例(TCP)
2017/02/07 Python
用TensorFlow实现戴明回归算法的示例
2018/05/02 Python
Python实现的读取电脑硬件信息功能示例
2018/05/30 Python
完美解决Python matplotlib绘图时汉字显示不正常的问题
2019/01/29 Python
用Python实现BP神经网络(附代码)
2019/07/10 Python
Pycharm 2020年最新激活码(亲测有效)
2020/09/18 Python
PyTorch使用cpu加载模型运算方式
2020/01/13 Python
Python3.6 + TensorFlow 安装配置图文教程(Windows 64 bit)
2020/02/24 Python
python 逆向爬虫正确调用 JAR 加密逻辑
2021/01/12 Python
html5文字阴影效果text-shadow使用示例
2013/07/25 HTML / CSS
什么是Smarty变量操作符?如何使用Smarty变量操作符
2014/07/18 面试题
一些Solaris面试题
2015/12/22 面试题
知识改变命运演讲稿
2014/05/21 职场文书
教师党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
个人诉讼委托书范本
2014/10/17 职场文书
个人总结格式范文
2015/03/09 职场文书
MySQL 原理与优化之Limit 查询优化
2022/08/14 MySQL