插入排序_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爬虫headers设置后无效的解决方法
Oct 21 Python
对numpy中数组元素的统一赋值实例
Apr 04 Python
Python快速查找list中相同部分的方法
Jun 27 Python
使用python对excle和json互相转换的示例
Oct 23 Python
浅谈python连续赋值可能引发的错误
Nov 10 Python
Face++ API实现手势识别系统设计
Nov 21 Python
教你一步步利用python实现贪吃蛇游戏
Jun 27 Python
OpenCV哈里斯(Harris)角点检测的实现
Jan 15 Python
5行Python代码实现图像分割的步骤详解
May 25 Python
Pytorch环境搭建与基本语法
Jun 03 Python
python cv2.resize函数high和width注意事项说明
Jul 05 Python
Python中threading库实现线程锁与释放锁
May 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入门的学习方法
2007/01/02 PHP
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
2012/08/09 PHP
浅析PHP的ASCII码转换类
2013/07/05 PHP
php读取富文本的时p标签会出现红线是怎么回事
2014/05/13 PHP
如何离线执行php任务
2017/02/21 PHP
laravel实现按时间日期进行分组统计方法示例
2019/03/23 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
Javascript 中文字符串处理额外注意事项
2009/11/15 Javascript
Easy.Ajax 部分源代码 支持文件上传功能, 兼容所有主流浏览器
2011/02/24 Javascript
javascript下拉列表中显示树形菜单的实现方法
2015/11/17 Javascript
jquery easyUI中ajax异步校验用户名
2016/08/19 Javascript
浅谈js的异步执行
2016/10/18 Javascript
JS高级运动实例分析
2016/12/20 Javascript
js自定义QQ菜单效果
2017/01/10 Javascript
微信小程序模板之分页滑动栏
2017/02/10 Javascript
jQuery插件Echarts实现的渐变色柱状图
2017/03/23 jQuery
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
2017/03/30 Javascript
bootstrap的常用组件和栅格式布局详解
2017/05/02 Javascript
Vue无限滑动周选择日期的组件的示例代码
2018/07/18 Javascript
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
2019/04/29 NodeJs
通过js给网页加上水印背景实例
2019/06/17 Javascript
vue中实现高德定位功能
2019/12/03 Javascript
解决小程序无法触发SESSION问题
2020/02/03 Javascript
JavaScript实现Excel表格效果
2020/02/07 Javascript
Python实时获取cmd的输出
2015/12/13 Python
在django中使用自定义标签实现分页功能
2017/07/04 Python
python解决js文件utf-8编码乱码问题(推荐)
2018/05/02 Python
python读取图片任意范围区域
2019/01/23 Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
2020/04/22 Python
python属于解释型语言么
2020/06/15 Python
野兽派官方旗舰店:THE BEAST 野兽派
2016/08/05 全球购物
《第一次抱母亲》教学反思
2014/04/16 职场文书
办公室文员工作自我鉴定
2014/09/19 职场文书
微笑面对生活演讲稿
2014/09/23 职场文书
用基于python的appium爬取b站直播消费记录
2021/04/17 Python