排序算法
来源:互联网 发布:js精粹 编辑:程序博客网 时间:2024/05/29 09:03
一.插入排序
①代码
def insertSort(myList): length=len(myList)#数组长度 for i in range(1,length):#从数组的1位置到最后,没有从0开始,默认0已经到新的数组中 j=i-1#参与排序数的前一个位置 if( myList[i]<myList[j]):#如果比前一个位置的数小 temp=myList[i]#交换位置,引入临时变量 myList[i]=myList[j] #后一个位置的数往前移到参加排序数的位置 j=j-1 #继续与下一个数比较大小,定位到下一个数 while j>=0 and myList[j]>temp: #如果前一个比temp要大,则继续往下找,直到最后 myList[j+1]=myList[j]#把j的位置的元素往右移 j=j-1 myList[j+1]=temp #直到找到比temp小,或者和temp相等的值,然后把它插入到j+1位置,此时j的位置是参加比较的数 return myList mylist=[5,6,1,2,9,10,5,6,7,3]print(mylist)print(insertSort(mylist))
②时间复杂度
当数据正序时,执行效率最好,每次插入都不用移动前面的元素,时间复杂度为O(N)。
当数据反序时,执行效率最差,每次插入都要前面的元素后移,时间复杂度为O(N2)。
所以,数据越接近正序,直接插入排序的算法性能越好。
③空间复杂度
由直接插入排序算法可知,我们在排序过程中,需要一个临时变量存储要插入的值,所以空间复杂度为 1 。
④稳定性
直接插入排序的过程中,不需要改变相等数值元素的位置,所以它是稳定的算法。
阅读全文
0 0
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- リスクを下げる方法
- 参数传递
- 解决tomcat占用8080端口问题图文教程
- 【自己的整理】socket.io官方demo|创建简单的聊天应用
- JDK动态代理实现原理
- 排序算法
- Waiting for .../output/faster_rcnn_end2end/voc_2007_trainval/VGGnet_fast_rcnn_iter_70000.ckpt
- SDUToj
- Android 使用librtmp推流【推流接口调用模块】
- 计算机网络笔记
- 文章标题
- Java 工程师岗位要求(支付)
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink高级特性与高级应用012-Slot和Parallelism的深入分析007
- 微博第三方登录