使用python实现排序算法(Insertion Sort)
2017-07-13 14:43
453 查看
所谓排序算法,就是按序列中数据值的大小,进行递增或递减排列的操作。插入排序(Insertion
Sort)是众多排序算法中的一种。插入排序算法通过对未排序数据序列中的每一个数据从后到前进行反复的对比,找到数据在序列中相应的位置。
算法描述:
插入排序算法简单直观,具体步骤及描述如下:
1,将未排序的数据序列分为已排序和未排序两部分,初始状态中默认序列中的第一个元素为已排序,其他元素为未排序。
2,从未排序的数据序列中提取第一个元素,与已排序序列中的元素从后到前逐一对比。
3,如果已排序元素大于未排序元素,就将未排序元素移到这个已排序元素的前一个位置。
4,重复步骤3,直到已排序元素小于或等于未排序元素。
5,未排序元素插入到该位置,并被记录为已排序元素,参加下一轮与未排序元素的对比。
6,重复之前2-5的步骤。
转自:http://bluewhale.cc/2017-07-10/python-algorithms-insertion-sort.html
Sort)是众多排序算法中的一种。插入排序算法通过对未排序数据序列中的每一个数据从后到前进行反复的对比,找到数据在序列中相应的位置。
算法描述:
插入排序算法简单直观,具体步骤及描述如下:
1,将未排序的数据序列分为已排序和未排序两部分,初始状态中默认序列中的第一个元素为已排序,其他元素为未排序。
2,从未排序的数据序列中提取第一个元素,与已排序序列中的元素从后到前逐一对比。
3,如果已排序元素大于未排序元素,就将未排序元素移到这个已排序元素的前一个位置。
4,重复步骤3,直到已排序元素小于或等于未排序元素。
5,未排序元素插入到该位置,并被记录为已排序元素,参加下一轮与未排序元素的对比。
6,重复之前2-5的步骤。
#导入随机数库 import random #生成6个1-21之间的随机数 alist=random.sample(range(1, 21), 6) #查看生成的6个随机数 alist [16, 4, 20, 7, 19, 9] def insertion_sort(alist): #将6个随机数赋值给sequence用于排序 sequence = alist[:] #输出未排序的数据序列 print("原始list",sequence) #获得未排序数据序列的个数 n = len(sequence) #如果数据序列中只有一个数字,则不进行排序,直接返回数据序列 if n==1: print("list只有一个数字",sequence) #循环输出未排序序列用于对比 for i in range(1, n): #未排序序列对应的值 value = sequence[i] #未排序数据序列位置编码 position = i #输出本次用于对比的未排序序列值与位置编码 print("第",i,"次取值:","位置:%s"%i,"数值:%s"% value) #设置数值对比的停止条件,返回list的第一个位置或未排序数值大于前一个位置的数值循环即停止(False) while position > 0 and value < sequence[position - 1]: #输出循环判断条件及结果 print("判断条件:位置:",position,">0 ?","AND","数值:",value,"<",sequence[position - 1],"?",position > 0 and value < sequence[position - 1]) #满足条件,即把值赋给list的前一个位置 sequence[position] = sequence[position - 1] #输出对比值和替换值 print(value,"替换",sequence[position - 1]) #向前更新一个位置,继续与下一个值进行对比 position -= 1 #输出更新后的新位置 print("向前更新一个位置:",position) #新位置如果小于0,或者下一个值小于对比值,元素插入该位置 sequence[position] = value #输出本轮排序的最终结果 print("第",i,"轮结果:",sequence,"\n")
def insertion_sort(alist): sequence = alist[:] n = len(sequence) if n==1: print("list只有一个数字",sequence) for i in range(1, n): value = sequence[i] position = i while position > 0 and value < sequence[position - 1]: sequence[position] = sequence[position - 1] position -= 1 sequence[position] = value print("第",i,"轮结果:",sequence)
转自:http://bluewhale.cc/2017-07-10/python-algorithms-insertion-sort.html
相关文章推荐
- 排序算法之插入排序<Insertion_Sort>及其C语言代码实现
- 天才排序算法:睡眠排序python使用协程实现
- leetcode 【 Insertion Sort List 】 python 实现
- 插入排序(INSERTION-SORT) PYTHON实现
- Python使用sort和class实现的多级排序功能示例
- 排序算法--插入排序(Insertion Sort)_C#程序实现
- 使用python代码实现三叉搜索树高效率”自动输入提示”功能
- 使用某个文件夹下的所有文件去替换另一个文件夹下及其子文件夹下存在的同名文件(Python实现)
- 使用python实现文本文件合并功能
- 【LeetCode with Python】 Insertion Sort List
- 用Python 实现刷钻网上抢任务,并实现一个简单的限制使用时间的功能
- 插入排序算法(Insertion Sort)的两种实现
- Linux系统中,有两个文件file1和file2,每个文件的每一行都是#UUID,其中的每一UUID表示一个号。要找出在file1中有而在file2中没有的UUID,使用cat,sort,uniq三个命令如何实现
- 使用ASP.NET Atlas SortBehavior实现客户端排序
- 使用Python实现RC4算法
- 排序算法python实现
- Python笔记——排序算法的实现
- 插入排序(insertion sort)算法实现
- 使用ASP.NET Atlas SortBehavior实现客户端排序
- python cgi ajax - 使用CGIHTTPServer实现一个ajax程序