插入排序_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实现监控linux性能及进程消耗性能的方法
Jul 25 Python
python非递归全排列实现方法
Apr 10 Python
flask中使用蓝图将路由分开写在不同文件实例解析
Jan 19 Python
Python 反转字符串(reverse)的方法小结
Feb 20 Python
python 获取list特定元素下标的实例讲解
Apr 09 Python
python使用rpc框架gRPC的方法
Aug 24 Python
使用python分析统计自己微信朋友的信息
Jul 19 Python
python利用itertools生成密码字典并多线程撞库破解rar密码
Aug 12 Python
Python BeautifulReport可视化报告代码实例
Apr 13 Python
python实现四人制扑克牌游戏
Apr 22 Python
Python Scrapy多页数据爬取实现过程解析
Jun 12 Python
利用PyQt5+Matplotlib 绘制静态/动态图的实现代码
Jul 13 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使用array_rand()函数从数组中随机选择一个或多个元素
2014/04/28 PHP
PHP中new static()与new self()的比较
2016/08/19 PHP
详解Yii2 rules 的验证规则
2016/12/02 PHP
数理公式,也可以这么唯美
2021/03/10 无线电
Firefox下提示illegal character并出现乱码的原因
2010/03/25 Javascript
jQuery+ajax实现鼠标单击修改内容的思路
2014/06/29 Javascript
jQuery中prepend()方法用法实例
2014/12/25 Javascript
JavaScript显示当前文档最后修改日期的方法
2015/03/19 Javascript
JS判断日期格式是否合法的简单实例
2016/07/11 Javascript
PhotoSwipe异步动态加载图片方法
2016/08/25 Javascript
Javascript日期格式化format函数的使用方法
2016/08/30 Javascript
详解使用grunt完成requirejs的合并压缩和js文件的版本控制
2017/03/02 Javascript
EasyUI的TreeGrid的过滤功能的解决思路
2017/08/08 Javascript
js使用generator函数同步执行ajax任务
2017/09/05 Javascript
vue操作下拉选择器获取选择的数据的id方法
2018/08/24 Javascript
仿ElementUI实现一个Form表单的实现代码
2019/04/23 Javascript
Vue 技巧之控制父类的 slot
2020/02/24 Javascript
[01:07:19]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第一场 1月19日
2021/03/11 DOTA
python中正则表达式的使用详解
2014/10/17 Python
python实现读取命令行参数的方法
2015/05/22 Python
Python多继承顺序实例分析
2018/05/26 Python
Python实现的读取电脑硬件信息功能示例
2018/05/30 Python
transform python环境快速配置方法
2018/09/27 Python
使用python接入微信聊天机器人
2020/03/31 Python
使用Pyinstaller转换.py文件为.exe可执行程序过程详解
2019/08/06 Python
python将四元数变换为旋转矩阵的实例
2019/12/04 Python
Python中如何将一个类方法变为多个方法
2019/12/30 Python
python基于pygame实现飞机大作战小游戏
2020/11/19 Python
ASOS西班牙官网:英国在线时尚和美容零售商
2020/01/10 全球购物
美国最大和最受信任的二手轮胎商店:Bestusedtires.com
2020/06/02 全球购物
竞选部门副经理的自荐书范文
2014/02/11 职场文书
学习雷锋精神心得体会范文
2014/03/12 职场文书
欢送会主持词
2015/07/01 职场文书
十二月早安励志心语大全
2019/12/03 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS
Redis中key的过期删除策略和内存淘汰机制
2022/04/12 Redis