插入排序_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 合并文件的具体实例
Aug 08 Python
python获取Linux下文件版本信息、公司名和产品名的方法
Oct 05 Python
Python爬虫PyQuery库基本用法入门教程
Aug 04 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
Oct 11 Python
Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法
Jun 05 Python
python实现随机漫步方法和原理
Jun 10 Python
python替换字符串中的子串图文步骤
Jun 19 Python
如何使用Python标准库进行性能测试
Jun 25 Python
python创建学生管理系统
Nov 22 Python
django 中使用DateTime常用的时间查询方式
Dec 03 Python
Python接收手机短信的代码整理
Aug 02 Python
python mock测试的示例
Oct 19 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常用代码
2006/11/23 PHP
实现PHP+Mysql无限分类的方法汇总
2015/03/02 PHP
php版微信自定义回复功能示例
2016/12/05 PHP
Laravel实现通过blade模板引擎渲染视图
2019/10/25 PHP
js 判断 enter 事件
2009/02/12 Javascript
js 绑定带参数的事件以及手动触发事件
2010/04/27 Javascript
ExtJS PropertyGrid中使用Combobox选择值问题
2010/06/13 Javascript
使用Mootools动态添加Css样式表代码,兼容各浏览器
2011/12/12 Javascript
JavaScript调试技巧之console.log()详解
2014/03/19 Javascript
jQuery常用数据处理方法小结
2015/02/20 Javascript
jQuery.ajax实现根据不同的Content-Type做出不同的响应
2016/11/03 Javascript
微信小程序手势操作之单触摸点与多触摸点
2017/03/10 Javascript
JavaScript函数柯里化原理与用法分析
2017/03/31 Javascript
十分钟带你快速了解React16新特性
2017/11/10 Javascript
Vue2.0 实现移动端图片上传功能
2018/05/30 Javascript
Vue实现导航栏菜单
2020/08/19 Javascript
javascript全局自定义鼠标右键菜单
2020/12/08 Javascript
Python的垃圾回收机制深入分析
2014/07/16 Python
Python中dictionary items()系列函数的用法实例
2014/08/21 Python
Ubuntu 下 vim 搭建python 环境 配置
2017/06/12 Python
Python 获取当前所在目录的方法详解
2017/08/02 Python
Pandas之Fillna填充缺失数据的方法
2019/06/25 Python
详解Python直接赋值,深拷贝和浅拷贝
2020/07/09 Python
Python 用__new__方法实现单例的操作
2020/12/11 Python
德国家具在线:Fashion For Home
2017/03/11 全球购物
世界上最大的艺术和工艺用品商店:MisterArt.com
2018/07/13 全球购物
static函数与普通函数有什么区别
2015/12/25 面试题
Order by的几种用法
2013/06/16 面试题
什么是岗位职责
2013/11/12 职场文书
石油大学毕业生自荐信
2014/01/28 职场文书
献爱心活动总结
2014/05/07 职场文书
初中班主任经验交流材料
2014/05/16 职场文书
打架赔偿协议书范本
2014/10/26 职场文书
jquery插件实现图片悬浮
2021/04/16 jQuery
《辉夜大小姐想让我告白》第三季正式预告
2022/03/20 日漫
win10搭建配置ftp服务器的方法
2022/08/05 Servers