排序算法之 插入排序
来源:互联网 发布:星星知我心演员 编辑:程序博客网 时间:2024/06/05 09:51
插入排序
基本思路
- 把待排序的原数列中的第一个数作为已排序列表的元素,剩余元素组成待排序列表;
- 接着从待排序列表中的第一个数开始,与已排序列表中的数一一作比较,并且是从右向左作比较;
- 若待排序数比已排序列表中的最右侧第一个数小,则进行已排序列表中该数字右移操作,并将待排序数插入该数字位置上;
- 循环进行待排序数与已排序列表中最右侧第二个数字比较;若待排序数仍比列表中数小,则继续进行右移、插入等操作,再进行与右第三个数比较;若待排序数比列表中数大,则退出循环;
- 待排序列表中之后的数依次与已排序列表中数进行比较。
图画展示
代码呈现
SortAlgorithm.py
# !/usr/bin/env python# -*- coding:utf-8 -*-__author__ = 'jwj'# 插入排序,默认升序,desc=True时为降序def insertSort(list, desc=False): count = len(list) if count == 0 or count == 1: return list for j in range(1, count): key = list[j] i = j - 1 if desc: while i >= 0 and list[i] < key: list[i+1] = list[i] list[i] = key i -= 1 else: while i >= 0 and list[i] > key: list[i+1] = list[i] list[i] = key i -= 1 return list
main.py
# !/usr/bin/env python# -*- coding:utf-8 -*-from SortAlgorithm import *if __name__ == '__main__': list = [45,2,5,11,1] print insertSort(list) #output: [1, 2, 5, 11, 45] print insertSort(list,True) #output: [45, 11, 5, 2, 1]
算法分析
- 插入排序基本操作:将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数列,算法适用于少量数据的排序,是稳定的排序方法。
- 时间复杂度
最好情况:原列表内数据已序,for循环进去,while循每次只需进行测试条件判断一次,T(n)=O(n)
最坏情况:原列表内数据均逆序,for循环进去,while循环需每次都进行条件判断和内部语句执行,T(n)=O(n^2)
0 0
- 排序算法之插入排序
- 排序算法之插入排序
- 排序算法之插入排序
- 排序算法之插入排序
- 排序算法之插入排序
- 排序算法之插入排序
- 排序算法之插入排序
- 排序算法之插入排序
- 排序算法之插入排序
- 排序算法之插入排序
- 排序算法之 插入排序
- 排序算法之插入排序
- 排序算法之插入排序
- 排序算法之插入排序
- 排序算法之插入排序
- 排序算法之插入排序
- 排序算法之插入排序
- 排序算法之插入排序
- windows服务器修改远程登录的端口+防火墙配置
- 智能指针
- mybatis 报错
- UGUI背包实现详解之三——UGUI中如何代码实现背包精灵物品互换拖拽效果
- webview加载不出数据解决方案
- 排序算法之 插入排序
- Genymotion报错An error occured while deploying the file
- Uva 1664 Conquer a New Region (Kruskal化用)
- Shiro入门-rememberMe
- 面试题
- C++语言学习路线
- youbbs的安装与配置
- Python 列表解析
- tensorflow 手写图像验证