Python 插入排序

插入排序总结:

  1. 当前需要排序的元素(array[i]),跟已经排序好的最后一个元素比较(array[i-1]),如果满足条件继续执行后面的程序,否则循环到下一个要排序的元素。
  2. 缓存当前要排序的元素的值,以便找到正确的位置进行插入。
  3. 排序的元素跟已经排序号的元素比较,比它大的向后移动(升序)。
  4. 要排序的元素,插入到正确的位置。

示例代码:

array = [3, 4, 1, 6, 2, 9, 7, 0, 8, 5]

# insert_sort
for i in range(1, len(array)):
    if array[i - 1] > array[i]:
        temp = array[i]     # 当前需要排序的元素
        index = i           # 用来记录排序元素需要插入的位置
        while index > 0 and array[index - 1] > temp:
            array[index] = array[index - 1]     # 把已经排序好的元素后移一位,留下需要插入的位置
            index -= 1
        array[index] = temp # 把需要排序的元素,插入到指定位置

# print sort result.
print(array)
时间: 2024-11-10 12:08:11

Python 插入排序的相关文章

python插入排序

def insert_sort(list): for i in range(len(list)): while i > 0 and list[i] < list[i-1]: temp = list[i] list[i] = list[i-1] list[i-1] = temp i = i-1 list = [4,4,11,23,4,5,7,9,0,111] insert_sort(list) list [0, 4, 4, 4, 5, 7, 9, 11, 23, 111] python插入排序

python插入排序演示源码

工作闲暇时间,把写内容过程较好的内容段做个备份,下面的内容内容是关于python插入排序演示的内容,应该能对各朋友也有用处. def insert_sort(t): for i in xrange(len(t)): key = t[i] j = i - 1 while j>-1 and t[j]>key:#如果当前值比上一位小,循环结束 t[j+1] = t[j] j -= 1 t[j+1] = key #确保待插入值被插入到合适的地方 return t t = [1,3,2,4]print

python插入排序实现:

插入排序实现: def insert_sort(arr): i =1 while i <=len(arr)-1: key = arr[i]; j =i -1 i +=1 while j >=0 and arr[j]>key: arr[j+1] = arr[j] j -=1 arr[j+1] = key return arr a = insert_sort([1,2,4,3]) print(a)  

Python—插入排序算法

# 插入排序,时间复杂度O(n²) def insert_sort(arr): """ 插入排序:以朴克牌为例,从小到大排序.摸到的牌current与手里的每张牌进行对比, 手里的牌大于current,则手里的牌往后移:手里的最后一张牌小于current,current最大,结束循环. :param arr: :return: """ for i in range(1, len(arr)): # 摸到的牌的index # 摸到的牌 current

python 插入排序 与 冒泡排序

# encoding: utf:8 l = [5, 6, 9, 11, 34, 66, 6, 8, 7] def twoPointSearch(l):     for i in range(len(l)):         min_index = i         for j in range(i+1, len(l)):    #####循环判断得出依次次最小直的索引             if l[min_index] > l[j]:                 min_index =

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.输出为输入的重新排列: 相关概念:[摘自百度