插入排序的python实现

import random

import datetime

def InsertSort(data) -> list:

"""

:param data:

:return:

"""

length = len(data)

if length == 0:

return data

start = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

print(start)

for i in range(1, length):

insertValue = data[i]

insertIndex = i - 1

while insertIndex >= 0 and data[insertIndex] < insertValue:

# 将大的数往前移动 小的数往后移动

data[insertIndex + 1] = data[insertIndex]

insertIndex -= 1

data[insertIndex + 1] = insertValue

end = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

print(end)

return data

if __name__ == "__main__":

datas = list()

for j in range(10):

integer = random.choice(range(1, 2017))

datas.append(integer)

print("排序前 --> %s" % datas)

sort_result = InsertSort(datas)

print("排序后 -->%s" % sort_result)

原文地址:https://www.cnblogs.com/SunshineLittleCat/p/8279241.html

时间: 2024-12-13 22:29:00

插入排序的python实现的相关文章

插入排序之python实现源码

def insert_sort(old): for i in range(1, len(old)): for j in range(i, 0, -1): if(old[j] < old[j-1]): tmp = old[j] old[j] = old[j-1] old[j-1] = tmp # test case old = [2, 5, 3, 0, 2, 3, 0, 3] insert_sort(old) print old 插入排序的时间复杂度O(N^2)

直接插入排序的python实现

1 # -*- coding:utf-8 -*- 2 3 '''直接插入的python实现 4 时间复杂度O(n**2) 空间复杂度O(1) 稳定 5 6 思想:先将前两个元素排序,第三个元素插入前面已排好序列, 7 后面的元素依次插入之前已经排好序的序列 8 ''' 9 10 author = 'Leo Howell' 11 12 L = [89,67,56,45,34,23,1] 13 14 def direct_insert_sort(numbers): 15 for i in range

插入排序之python

插入排序( Insert sort) 通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入: 由于不需要全部都比较完,所以排序速度优于冒泡和选择排序. #插入排序就像是斗地主摸牌 1.算法描述: 从第一个元素开始,该元素可以认为已经被排序: 取出下一个元素,在已经排序的元素序列中从后向前扫描: 如果该元素(已排序)大于新元素,将该元素移到下一位置: 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置: 将新元素插入到该位置后: 重复步骤2~5. 2.算法属性:

Python排序算法之直接插入排序

插入排序的主要思想是每次取一个列表元素与列表中已经排序好的列表段进行比较,然后插入从而得到新的排序好的列表段,最终获得排序好的列表. 比如,待排序列表为[49,38,65,97,76,13,27,49],则比较的步骤和得到的新列表如下: (带有背景颜色的列表段是已经排序好的,红色背景标记的是执行插入并且进行过交换的元素) 时间复杂度:O(n^2) 待排序:  [49,38,65,97,76,13,27,49] 第一次比较后:  [38,49,65,97,76,13,27,49]     第二个元

选择排序、插入排序、冒泡排序python实现

选择排序的时间复杂度为O(n^2),是不稳定的排序 冒泡排序的时间复杂度最好情况下为O(n),最坏情况下为O(n^2),平均情况下为O(n^2),是稳定的排序 插入排序的时间复杂度最好情况下为O(n),最坏情况下为O(n^2),,平均情况下为O(n^2),是稳定的排序 1.选择排序 def selection(lista): leng=len(lista); for i in range(0,leng): index=i; min=lista[i]; for j in range(i,leng)

JavaScript ,Python,Go,java,C#系列算法之【插入排序】篇

常见的内部排序算法有:插入排序.希尔排序.选择排序.冒泡排序.归并排序.快速排序.堆排序.基数排序等.用一张图概括: 插入排序 插入排序(英语:Insertion Sort)是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入.插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间. 插入排序和冒泡排序一样,也有一种

排序算法分析【一】:插入排序(附Python&amp;C++代码)

本文除了代码是自己写的,其余部分都是已存在内容.作者只是整理归纳学习,肯定不是原创,但是不是翻译,更不是转载,所以只能标注为原创,因为代码是原创.向前辈敬礼! 一.基本概念 排序算法(Sorting algorithm):将一串数据依照特定排序方式进行排列的一种算法. 排序算法是基础中的基础,重中之重.是某些算法如搜索算法.合并算法的前置算法.排序不仅仅是对数值排序,也可以是字符串. 排序算法的要求: 1.输出结果为递增(和需要排序的目标相同): 2.输出为输入的重新排列: 相关概念:[摘自百度

python排序之一插入排序

python排序之一插入排序 首先什么是插入排序,个人理解就是拿队列中的一个元素与其之前的元素一一做比较交根据大小换位置的过程好了我们先来看看代码 首先就是一个无序的列表先打印它好让排序后有对比效果,然后我后面注释工作流程,下面我来一一说明下其运行流程,开始先声明一个插入排序的函数名insert_sort,要传入的参数为lis,count来获取列表lis长度len(lis),然后我们要开始写循环对比for i in range(从1到列表长度count)然后把列表下标为一位置的数也就是28(li

Python使用二分插入排序竟然比直接插入排序快99倍!

?? Python使用二分插入排序竟然比直接插入排序快99倍! 之前发布同一个算法,C++竟然比C快8倍! , 有同学提出是因为C++中使用了二分插入排序,于是用python比较了下两种排序差距有多大. 测试结果如下: Python insertion sort took time: 1:39:42.448904Python insertion sort with binary search took time: 0:01:13.263267 代码如下: import datetime impo