插入排序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实现版的更多相关文章

  1. 笨办法学 Python (第三版)(转载)

    笨办法学 Python (第三版) 原文地址:http://blog.sina.com.cn/s/blog_72b8298001019xg8.html   摘自https://learn-python ...

  2. Python之路,Day4 - Python基础4 (new版)

    Python之路,Day4 - Python基础4 (new版)   本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 ...

  3. python核心编程第二版笔记

    python核心编程第二版笔记由网友提供:open168 python核心编程--笔记(很详细,建议收藏) 解释器options:1.1 –d   提供调试输出1.2 –O   生成优化的字节码(生成 ...

  4. [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source …

    [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source - [Pyth ...

  5. 目前比较流行的Python科学计算发行版

    经常有身边的学友问到用什么Python发行版比较好? 其实目前比较流行的Python科学计算发行版,主要有这么几个: Python(x,y) GUI基于PyQt,曾经是功能最全也是最强大的,而且是Wi ...

  6. 《OpenCV3 计算机视觉--Python语言实现 第二版》源代码及纠错

    1.源代码下载地址 <OpenCV3 计算机视觉--Python语言实现 第二版>由我们翻译,英文书名<Learning OpenCV3 Computer Vision with P ...

  7. 利用Python进行数据分析(第二版)电子版书籍分享

    资料下载地址: 链接:https://pan.baidu.com/s/1y1C0bJPkSn7Sv6Eq9G5_Ug 提取码:vscu <利用Python进行数据分析(第二版)>高清中文版 ...

  8. 实操一下<python cookbook>第三版1

    这几天没写代码, 练一下代码. 找的书是<python cookbook>第三版的电子书. *这个操作符,运用得好,确实少很多代码,且清晰易懂. p = (4, 5) x, y = p p ...

  9. 零基础学python》(第二版)

    ---恢复内容开始--- 零基础学python>(第二版) python学习手册 可以离线下载,  .chn格式, 插入小幽默笑话,在学习累的时候看看笑话 放松一下 欢迎下载转载,请注明出处,谢 ...

随机推荐

  1. dotweb框架之旅 [一] - HelloWorld

    一直想着,要系统性的写一些dotweb使用的文章,之前拖延了不少时间,今天,下定决定,算是正式的开始,也请大家一起监督. dotweb,是一款追求简约大方的go web框架,正如其github项目主页 ...

  2. ios获取内核数目

    #include <mach/mach_host.h> unsigned int countCores() { host_basic_info_data_t hostInfo; mach_ ...

  3. JavaScript中的面向对象程序设计

    本文内容目录顺序: 1.Object概念讲述: 2.面向对象程序设计特点: 3.JavaScript中类和实例对象的创建: 4.原型概念: 5.原型API: 6.原型对象的具体使用:7.深入理解使用原 ...

  4. pm2部署多个nodejs项目配置教程

    实际项目部署中,我们服务器在启动的时候需要自动启动node服务.以前是通过liunx自带的命令启动.但是随着后台微服务越来越多.每次发布新程序.修改脚本太麻烦了.于是换成PM2来做. 1.首先安装pm ...

  5. 如何在 UWP 使用 wpf 的 Trigger

    本文需要告诉大家,如何使用 Behaviors 做出 WPF 的 Trigger ,需要知道 UWP 不支持 WPF 的 Trigger . 安装 Behaviors 请使用 Nuget 安装,可以输 ...

  6. win10 uwp DataContext

    本文告诉大家DataContext的多种绑法. 适合于WPF的绑定和UWP的绑定. 我告诉大家很多个方法,所有的方法都有自己的优点和缺点,可以依靠自己喜欢的用法使用.当然,可以在新手面前秀下,一个页面 ...

  7. WPF DataGridHyperlinkColumn

    为了点击链接,我们使用 <DataGrid x:Name="data" LoadingRow="load" ItemsSource="{Bind ...

  8. 61、web框架

    每个编程语言都有它自己的框架,它是我们做项目总重要的一部分.python最重要的框架为django,到底什么是框架,今天先来了解了解 一.http协议 1.HTTP简介 HTTP协议是Hyper Te ...

  9. 【转】地址空间、内核空间、IO地址空间

    http://blog.csdn.net/wuxinke_blog/article/details/8769131 有这么一系列的问题,是否在困扰着你:用户程序编译连接形成的地址空间在什么范围内?内核 ...

  10. Tomcat针对网站打开速度慢进行局部优化方案

    首先打开tomcat下的conf文件夹里面的server.xml找到Tomcat端口号一栏 <Connector port="8081" protocol="HTT ...