数据结构:插入排序算法,详解,图解 -- 数据结构算法集

插入排序算法

插入排序:

一般称为直接插入排序,对于少量的元素排序,比较高效,
这里使用的顺序是正序,从小到大排列,

基本思想:

每一步将一个待排序的数据插入到前面已经排好序的有序序列中,直到插完所有元素为止

原理:

‘待插入元素’依次与前面的元素比较插入到合适的位置(这里比较是从‘待插入元素’前面的元素开始比较,依次往前比较)

思路:

首先插入排序有两层循环
第一层循环从第二个元素开始,用来控制‘待插入元素’的位置,
第二层循环,里的元素是‘待插入元素’以及前面的所有元素的下标,进行倒序循环,
依次判断后两个元素的大小,前面大于后面,进行位置交换,反之,内循环结束,进行下一次外循环。

图解

在这里插入图片描述

代码实现

Python2.7.5

# _*_encoding:utf-8 _*_


def insert_sort(lists):
	# 排序从第二个元素开始,执行n-1次,因为第一个元素无法与前面元素作比较,默认第一个元素为有序的
	for i in range(1,len(lists)):
		# 这里取要比较元素以及前面的元素,倒序依次比较大小,j - 1 大于 j 内层循环结束     
		for j in range(i,0,-1):
			# 这里的lists[j] 始终是 lists[i] 		  
			if lists[j-1] > lists[j]:
				# 进行与前面元素位置交换
				lists[j],lists[j - 1] = lists[j - 1],lists[j]
			else:
				# 后面元素大于前面元素结束内层循环
				break
	return lists

lt = [7,3,2,4,9,1]
print insert_sort(lt)


文章中有不足之处请多多指教,欢迎讨论,共同学习,共同进步

参考:
https://blog.csdn.net/qq_33289077/article/details/90370899

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值