插入排序_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脚本快速为iOS10生成图标和截屏
Sep 22 Python
python 异常处理总结
Oct 18 Python
Python中文分词工具之结巴分词用法实例总结【经典案例】
Apr 15 Python
利用Tkinter和matplotlib两种方式画饼状图的实例
Nov 06 Python
python3 图片referer防盗链的实现方法
Mar 12 Python
Python、 Pycharm、Django安装详细教程(图文)
Apr 12 Python
python实现微信定时每天和女友发送消息
Apr 29 Python
python支持多继承吗
Jun 19 Python
Numpy中np.random.rand()和np.random.randn() 用法和区别详解
Oct 23 Python
如何利用pycharm进行代码更新比较
Nov 04 Python
在终端启动Python时报错的解决方案
Nov 20 Python
Python 高级库15 个让新手爱不释手(推荐)
May 15 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
第四节 构造函数和析构函数 [4]
2006/10/09 PHP
PHP 检查扩展库或函数是否可用的代码
2010/04/06 PHP
array_multisort实现PHP多维数组排序示例讲解
2011/01/04 PHP
ThinkPHP的常用配置选项汇总
2016/03/24 PHP
用html5 js实现点击一个按钮达到浏览器全屏效果
2014/05/28 Javascript
jQuery添加/改变/移除CSS类及判断是否已经存在CSS
2014/08/20 Javascript
JQuery.get提交页面不跳转的解决方法
2015/01/13 Javascript
jquery实现的用户注册表单提示操作效果代码分享
2015/08/28 Javascript
Bootstrap零基础入门教程(二)
2016/07/18 Javascript
js实现城市级联菜单的2种方法
2017/06/23 Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
2017/07/27 Javascript
vuejs+element-ui+laravel5.4上传文件的示例代码
2017/08/12 Javascript
微信小程序slider组件使用详解
2018/01/31 Javascript
vue-cli结合Element-ui基于cropper.js封装vue实现图片裁剪组件功能
2018/03/01 Javascript
Vue 应用中结合vux使用微信 jssdk的方法
2018/08/28 Javascript
JavaScript设计模式之代理模式实例分析
2019/01/16 Javascript
vue插件mescroll.js实现移动端上拉加载和下拉刷新
2019/03/07 Javascript
vue实现购物车的监听
2020/04/20 Javascript
python使用百度翻译进行中翻英示例
2014/04/14 Python
Python中pygal绘制雷达图代码分享
2017/12/07 Python
python自动发微信监控报警
2019/09/06 Python
python3获取url文件大小示例代码
2019/09/18 Python
Python Pandas对缺失值的处理方法
2019/09/27 Python
python range实例用法分享
2020/02/06 Python
PyCharm2019 安装和配置教程详解附激活码
2020/07/31 Python
基于Python实现下载网易音乐代码实例
2020/08/10 Python
python如何利用paramiko执行服务器命令
2020/11/07 Python
html5 sessionStorage会话存储_动力节点Java学院整理
2017/07/06 HTML / CSS
Burberry英国官网:英国标志性奢侈品牌
2017/03/29 全球购物
美国在线纱线商店:Darn Good Yarn
2019/03/20 全球购物
一组SQL面试题
2016/02/15 面试题
资产经营总监岗位职责
2013/12/04 职场文书
煤矿安全生产标语
2014/06/06 职场文书
地理科学专业自荐信
2014/09/01 职场文书
行风评议整改报告
2014/11/06 职场文书
php双向队列实例讲解
2021/11/17 PHP