插入排序_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编写一个简单的tic-tac-toe游戏的教程
Apr 16 Python
Python记录详细调用堆栈日志的方法
May 05 Python
在Python中使用成员运算符的示例
May 13 Python
python中异常捕获方法详解
Mar 03 Python
Python 基础教程之str和repr的详解
Aug 20 Python
python下实现二叉堆以及堆排序的示例
Sep 29 Python
Python面向对象之接口、抽象类与多态详解
Aug 27 Python
Python批处理更改文件名os.rename的方法
Oct 26 Python
用Python读取几十万行文本数据
Dec 24 Python
选择Python写网络爬虫的优势和理由
Jul 07 Python
python实现五子棋程序
Apr 24 Python
在pycharm中关掉ipython console/PyDev操作
Jun 09 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 csv操作类代码
2009/12/14 PHP
PHP实现生成唯一编号(36进制的不重复编号)
2014/07/01 PHP
各种快递查询--Api接口
2016/04/26 PHP
php 使用html5实现多文件上传实例
2016/10/24 PHP
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
2019/12/04 PHP
jQuery 选择器项目实例分析及实现代码
2012/12/28 Javascript
jQuery验证元素是否为空的两种常用方法
2015/03/17 Javascript
JavaScript中Number.MAX_VALUE属性的使用方法
2015/06/04 Javascript
基于jquery animate操作css样式属性小结
2015/11/27 Javascript
Bootstrap入门书籍之(五)导航条、分页导航
2016/02/17 Javascript
JavaScript仿百度图片浏览效果
2016/11/23 Javascript
jQuery实现的简单拖动层示例
2017/02/22 Javascript
javascript中json对象json数组json字符串互转及取值方法
2017/04/19 Javascript
jQuery操作之效果详解
2017/05/19 jQuery
LayUI表格批量删除方法
2018/08/15 Javascript
angularjs实现对表单输入改变的监控(ng-change和watch两种方式)
2018/08/29 Javascript
vue-router 起步步骤详解
2019/03/26 Javascript
jquery 回调操作实例分析【回调成功与回调失败的情况】
2019/09/27 jQuery
JS轮播图的实现方法
2020/08/24 Javascript
Python SQLite3简介
2018/02/22 Python
如何优雅地处理Django中的favicon.ico图标详解
2018/07/05 Python
python模块导入的细节详解
2018/12/10 Python
Python 脚本获取ES 存储容量的实例
2018/12/27 Python
Python网络编程之使用TCP方式传输文件操作示例
2019/11/01 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
2020/03/11 Python
用python写一个带有gui界面的密码生成器
2020/11/06 Python
CK巴西官方网站:Calvin Klein巴西
2019/07/19 全球购物
LN-CC英国:伦敦时尚生活的缩影
2019/09/01 全球购物
介绍一下linux的文件权限
2014/07/20 面试题
集团公司总经理岗位职责
2013/12/20 职场文书
三年级语文教学反思
2014/02/01 职场文书
新员工试用期自我鉴定
2014/04/17 职场文书
小学安全教育月活动总结
2014/07/07 职场文书
三严三实对照检查材料
2014/09/22 职场文书
「月刊Action」2022年5月号封面公开
2022/03/21 日漫