插入排序_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实现ID3决策树算法
Dec 20 Python
python中的字典操作及字典函数
Jan 03 Python
python使用mysql的两种使用方式
Mar 07 Python
pycharm设置注释颜色的方法
May 23 Python
Python实现绘制双柱状图并显示数值功能示例
Jun 23 Python
python3爬虫获取html内容及各属性值的方法
Dec 17 Python
python图形工具turtle绘制国际象棋棋盘
May 23 Python
python实现两张图片拼接为一张图片并保存
Jul 16 Python
如何实现Django Rest framework版本控制
Jul 25 Python
详解centos7+django+python3+mysql+阿里云部署项目全流程
Nov 15 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
Jun 08 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
Dec 08 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
SSI指令
2006/11/25 PHP
PHP中is_file不能替代file_exists的理由
2014/03/04 PHP
ThinkPHP3.1新特性之动态设置自动完成和自动验证示例
2014/06/19 PHP
thinkphp判断访客为手机端或PC端的方法
2014/11/24 PHP
ThinkPHP中order()使用方法详解
2016/04/19 PHP
PHP未登录自动跳转到登录页面
2016/12/21 PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
2019/10/21 PHP
Mootools 1.2教程 事件处理
2009/09/15 Javascript
js实现iframe跨页面调用函数的方法
2014/12/13 Javascript
javascript顺序加载图片的方法
2015/07/18 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
2015/09/09 Javascript
深入理解JavaScript 函数
2016/06/06 Javascript
Three.js快速入门教程
2016/09/09 Javascript
如何用JS/HTML将时间戳转换为“xx天前”的形式
2017/02/06 Javascript
vue mint-ui tabbar变组件使用
2018/05/04 Javascript
详解如何使用nvm管理Node.js多版本
2019/05/06 Javascript
教你使用vue-cli快速构建的小说阅读器
2019/05/13 Javascript
nodejs一个简单的文件服务器的创建方法
2019/09/13 NodeJs
基于better-scroll 实现歌词联动功能的代码
2020/05/07 Javascript
[03:02]2020完美世界城市挑战赛(秋季赛)总决赛回顾
2021/03/11 DOTA
Python 深入理解yield
2008/09/06 Python
Python中使用装饰器时需要注意的一些问题
2015/05/11 Python
Python通过Django实现用户注册和邮箱验证功能代码
2017/12/11 Python
python实现嵌套列表平铺的两种方法
2018/11/08 Python
结合OpenCV与TensorFlow进行人脸识别的实现
2019/10/10 Python
python 实现return返回多个值
2019/11/19 Python
ansible-playbook实现自动部署KVM及安装python3的详细教程
2020/05/11 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
Spongelle官网:美国的创意护肤洗护品牌
2019/05/15 全球购物
掌上明珠Java程序员面试总结
2016/02/23 面试题
《小小竹排画中游》教学反思
2014/02/26 职场文书
个人房屋买卖协议书(范本)
2014/10/04 职场文书
2014年医药代表工作总结
2014/11/22 职场文书
职场中的你,辞职信写对了吗?
2019/06/26 职场文书
导游词之麻姑仙境
2019/11/18 职场文书
一次MySQL启动导致的事故实战记录
2021/09/15 MySQL