排序系列-插入排序
2016-11-29 00:00
134 查看
# -*- coding: UTF-8 -*- ''' Created on 2016年11月25日 @author: llg ''' # 直接插入排序 from scipy.io.matlab.miobase import arr_dtype_number def 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))
相关文章推荐
- 内部排序系列 之 插入排序与shell(希尔)排序
- 排序和搜索(一)插入排序系列
- 算法熟记-排序系列-插入排序
- 排序系列之——冒泡排序、插入排序、选择排序
- 数据结构与算法系列之一:八大排序之插入排序
- 算法系列(二)冒泡排序、选择排序、插入排序和希尔排序(Java实现)
- C语言排序系列之插入排序(1)
- 数据结构--排序系列(插入排序,希尔排序,堆排序)Java代码实现
- 数据结构与算法从零开始系列:冒泡排序、选择排序、插入排序、希尔排序、堆排序、快速排序、归并排序、基数排序
- 【排序系列】插入排序java实现
- 算法系列(三)排序算法上篇--冒泡排序插入排序和选择排序
- 算法系列(三)排序算法上篇--冒泡排序插入排序和选择排序
- 第二节:ExtJS调用WCF系列-----分页排序列表实现
- BBS 设计思路系列 ---- 论坛帖子列表排序,默认应该再加上价值的加权
- C#排序算法:冒泡排序 选择排序 插入排序 希尔排序
- C#实现的3种排序算法--冒泡排序、选择排序、插入排序
- 通过 TStringList 给系列数字倒排序 - 回复 lancerning 的问题
- C#的四种排序算法 冒泡排序、选择排序、插入排序和希尔排序
- 插入排序,合并排序,堆排序,快速排序,计数排序的实现(算法导论)
- C#排序算法:冒泡排序 选择排序 插入排序 希尔排序