博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
排序系列-插入排序
阅读量:6164 次
发布时间:2019-06-21

本文共 2141 字,大约阅读时间需要 7 分钟。

hot3.png

# -*- coding: UTF-8 -*- '''Created on 2016年11月25日@author: llg'''# 直接插入排序from scipy.io.matlab.miobase import arr_dtype_numberdef InsertSort(mylist):    size = len(mylist)    i = 1    for i in range(1, size):                #判断是否需要交换        '''            如果需要排序,这个时候才需要对之前已经排序好的的进行插入        '''        if mylist[i] < mylist[i-1]:            # 记录当前小插入的值            tmp = mylist[i]            #记录需要循环判断是否需要插入的范围            j = i - 1            # 向后移动一位            mylist[j + 1] = mylist[j]            j = j - 1                        while j >= 0 and mylist[j] > tmp:                mylist[j + 1] = mylist[j]                j = j - 1            mylist[j + 1] = tmp            mylist0 = [12, 11, 13, 1, 2, 4, 3]#InsertSort(mylist0)#print(mylist0)def insert_sorts(arr):    size = len(arr)    for i in range(1,size):        #发生乱序,这个时候就需要开始移动数据里        if arr[i-1]>arr[i]:            # 先把 i位的数据拿出来,这个就是需要插入到之前已经排好序的列表中的数据            tem = arr[i]            # 替换数据            arr[i] = arr[i-1]            '''                接下来要做的就是,将这个新插入的数据,再同之前已经排好序的数据进行逐个比较,来判断这厮究竟应该放在哪个位置            '''            j = i-1;            while j>=0 and arr[j]>tem:                '''                    遍历之前已经排序号的数组,从大到小,判断最终这个值应该插入的位置,                '''                arr[j+1] = arr[j]                                ## 移动后,指针向前移动一位                '''                    这里解释为什么后面 是将 tem 赋值给了 arr[j+1]                                        假设j=0 时 j=j-1 为-1                    再次循环,不满足条件,这个是什么意思呢,此时j已经为-1,了,所有的遍历都结束了,这个时候,就应该把 tem的值赋给 0 位,应为0位的值已经                    给了1 ,所有最后有一行 arr[j+1] = tem                 '''                j = j-1;                        arr[j+1]=tem            insert_sorts(mylist0)print (mylist0)# # # def insert_sort(arr):#     size= len(arr)#     for i in range(1,size):#         insert(arr, i)#     #     return arr# def insert(arr,i):#     tmp=arr[i]#     j=i#     ## 只有在j>0,并且#     while j>0 and tmp< arr[j-1]:#         arr[j]=arr[j-1]#         # java种的j--#         j-=1;# #     arr[i]=tmp# # # mylist0 = [12, 11, 13, 1, 2, 4, 3]# # print mylist0# # print (insert_sort(mylist0))

 

转载于:https://my.oschina.net/u/1246109/blog/796227

你可能感兴趣的文章
Dijkstra算法
查看>>
css 动画 和 响应式布局和兼容性
查看>>
csrf 跨站请求伪造相关以及django的中间件
查看>>
MySQL数据类型--与MySQL零距离接触2-11MySQL自动编号
查看>>
生日小助手源码运行的步骤
查看>>
Configuration python CGI in XAMPP in win-7
查看>>
bzoj 5006(洛谷 4547) [THUWC2017]Bipartite 随机二分图——期望DP
查看>>
CF 888E Maximum Subsequence——折半搜索
查看>>
欧几里德算法(辗转相除法)
查看>>
面试题1-----SVM和LR的异同
查看>>
MFC控件的SubclassDlgItem
查看>>
如何避免历史回退到登录页面
查看>>
《图解HTTP》1~53Page Web网络基础 HTTP协议 HTTP报文内的HTTP信息
查看>>
unix环境高级编程-高级IO(2)
查看>>
树莓派是如何免疫 Meltdown 和 Spectre 漏洞的
查看>>
雅虎瓦片地图切片问题
查看>>
HTML 邮件链接,超链接发邮件
查看>>
HDU 5524:Subtrees
查看>>
手机端userAgent
查看>>
pip安装Mysql-python报错EnvironmentError: mysql_config not found
查看>>