用python实现插入排序

# 插入排序
def insert_sort(elems):
    for i in range(0, len(elems)):
        x = elems[i]
        j = i
        while j > 0 and elems[j-1] > x:
            elems[j] = elems[j-1]
            j -= 1
        elems[j] = x
    return elems

插入排序的思想:

  1. 假设List的前面已经排好序了
  2. 找到排好序的后面那一个元素x,与他前面的元素比较,如果前面的大,就把前面的赋值给后面,直到找到一个比他小的
  3. 把当前元素插入进去
时间: 2024-11-08 23:41:35

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

python之插入排序

插入排序原理:它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. 插入排序核心:假设第一个元素排好,之后的元素对排好的部分从后向前比较并逐一移动. 实现技巧: 讲一组数据分成两组,我分别将其称为有序组与待插入组.每次从待插入组中取出一个元素,与有序组的元素进行比较,并找到合适的位置,将该元素插到有序组当中.就这样,每次插入一个元素,有序组增加,待插入组减少.直到待插入组元素个数为0.当然,插入过程中涉及到了元素的移动. 为了排序方便,我们一般将数据第

算法导论之python实现插入排序

插入排序的花费时间 c*n2, c 是常数 伪代码 INSERTION-SORT(A) for i  to A.length key = A[j] //Insert A[j] into the sorted sequence A[1... j-1] i = j - 1 while i > 0 and A[i] > key A[i+1] = A[i] i  =i - 1 A[i+1] = key python3.4 : def insertion_sort(sort_list): length

python实现插入排序

#_*_coding:utf-8-*- def Insert(x,n): i = 1; while i<=n-1: key = x[i] j = i-1 while j >= 0 and key<x[j]: x[j+1] = x[j] j -= 1 x[j+1] = key i+=1 return x list_test = [12,32,54,63,89,4,3,52,631,14,25] print("插入排序之前的数据:%s" %list_test) print

用python实现插入排序和冒泡排序

插入排序和冒泡排序的概念我就不解释了吧 ...插入排序代码: 1 if __name__ =='__main__': 2 l = [4,1,9,13,34,26,10,7,4] 3 4 #=========================insert_sort========================= 5 def insert_sort(l): 6 for i in range(len(l)): 7 min_index = i 8 for j in range(i+1,len(l)):

python 实现插入排序、冒泡排序、归并排序

1 def InsertSort(A): 2 '''插入排序算法:传入一个list,对list中的数字进行排序''' 3 print('插入排序前list元素顺序:',A) 4 length=len(A) 5 for i in range(1,length):#从第二个开始 6 key=A[i] 7 j=i-1 8 while j>=0 and A[j]>key: 9 A[j+1]=A[j] 10 j=j-1 11 A[j+1]=key 12 print('插入排序后的list元素顺序:',A

python 排序 插入排序

算法思想: 将数组元素插入已经有序的部分中,具体的过程是在有序的部分中通过比较找到新插入元素应该插入的位置,然后从有序部分的队尾元素开始,统统向后移动一位(这一位原本是刚刚那个元素的位置)直到应改插入的那个地方给腾出来,将元素放进去,重复上述过程,直到所有元素有序 def insertion_sort4(collection): length=len(collection) #外层循环负责从前到后,将所有元素向前插入 for loop_index in range(1,length): #内层循

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)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间. 插入排序和冒泡排序一样,也有一种