【 python 学习笔记 -- 数据结构与算法 】插入排…
2018-06-18 00:45:00来源:未知 阅读 ()
【插入排序】:每次保证列表最左端子序列是排好顺序的,然后取下一个元素,扫描其左端的子序列,将其中大于目标元素的元素右移一个位置,直到找到合适的位置将目标元素插入子序列中。逐步增大排序完成的sublist的长度,最终完成整个列表的排序
算法思路如下:
1. 列表最左边第一个元素认为已经排序好了
2. 取下一个元素(目标元素),在它前面已经排序完成的子序列中从后向前扫描
3. 如果子序列中被扫描的当前元素大于目标元素,则将当前元素右移一个位置
4. 重复第3步,直到被扫描的元素小于或等于目标元素
5. 将目标元素插入到步骤4中所述元素的右面
6. 重复上述2-5的步骤,直到列表最后一个元素插入到适当的位置,整个列表排序完成。
【 示意图 】
下图是完成插入排序的整个过程
下图是灰色部分是已经排好顺序的子列表。现在要插入下一个目标元素31,从子列表最右端元素开始扫描:
93>31,右移一个位置;77, 54 同理;26<31,把31插入26后面的位置。
【 implementation of insertion sort】
【 performance analysis 】
最坏的情况下,列表降序排列,比较次数为O(n2);最好的情况下,列表正序排列,比较次数为O(n)
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash