码迷,mamicode.com
首页 > 编程语言 > 详细

算法(插入、希尔、冒泡)

时间:2020-02-25 00:36:02      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:学习技巧   比较   希尔   个数   控制   开始   位置   是什么   bubble   

算法学习技巧
先问自己几个问题
什么是什么? 为什么要这么写? 稳定性? 时间复杂度? 冒泡排序 是什么:首先拿到第1个元素,和它第二个比较,较大的放右边;第二个与第三个比,一直重复下去 ,最后一个就是最大的数 为什么:总共有n个数,主要是控制轮数,第二个是控制次数。比的次数 为:n
-1 稳定性 时间复杂度 方法一: def Bubble(arr): for i in range(len(arr)): for j in range(len(arr)-1-i): if arr[j]>arr[j+1]: arr[j],arr[j+1]=arr[j+1],arr[j] return arr arr=[9,3,6,2,0,6] print(Bubble(arr)) >>> arr=[9,3,6,2,0,6] >>> print(Bubble(arr)) [0, 2, 3, 6, 6, 9] 方法二: def Bubble(arr): i=0 while i<len(arr): print("当前为第%s轮"%i+"***********************************") for j in range(len(arr)-1-i): if arr[j]>arr[j+1]: arr[j],arr[j+1]=arr[j+1],arr[j] print("当前的值得为:",(arr[j],arr[j+1])) i+=1 return arr arr=[9,3,6,2,0,6] print(Bubble(arr)) 方法三: def Bubble(arr): i=0 while i<len(arr): print("当前为第%s轮"%(i+1)+"***********************************") j=len(arr)-1-i while j<i: if arr[j]>arr[j+1]: arr[j],arr[j+1]=arr[j+1],arr[j] #print("当前的值得为:",(arr[j],arr[j+1])) print("当前的数组为:",arr) j+=1 i+=1 return arr arr=[9,3,6,2,0,6] print(Bubble(arr)) >>> def Bubble(arr): ... i=0 ... while i<len(arr): ... print("当前为第%s轮"%(i+1)+"***********************************") ... j=len(arr)-1-i ... while j<i: ... if arr[j]>arr[j+1]: ... arr[j],arr[j+1]=arr[j+1],arr[j] ... #print("当前的值得为:",(arr[j],arr[j+1])) ... print("当前的数组为:",arr) ... j+=1 ... i+=1 ... return arr ... >>> arr=[9,3,6,2,0,6] >>> print(Bubble(arr)) 当前为第1轮*********************************** 当前为第2轮*********************************** 当前为第3轮*********************************** 当前为第4轮*********************************** 当前的数组为: [9, 3, 2, 6, 0, 6] 当前为第5轮*********************************** 当前的数组为: [9, 2, 3, 6, 0, 6] 当前的数组为: [9, 2, 3, 0, 6, 6] 当前为第6轮*********************************** 当前的数组为: [2, 9, 3, 0, 6, 6] 当前的数组为: [2, 3, 9, 0, 6, 6] 当前的数组为: [2, 3, 0, 9, 6, 6] 当前的数组为: [2, 3, 0, 6, 9, 6] 当前的数组为: [2, 3, 0, 6, 6, 9] [2, 3, 0, 6, 6, 9] >>>
插入排序 方法一
def insertSort(arr): for i in range(1,len(arr)): for j in range(i,0,-1): if arr[j-1]>arr[j]: arr[j-1],arr[j]=arr[j],arr[j-1] return arr arr=[9,3,6,2,0,6] print(insertSort(arr)) ... >>> arr=[9,3,6,2,0,6] >>> print(insertSort(arr)) [0, 2, 3, 6, 6, 9] >>> 方法二 def insertSort(arr): for i in range(1,len(arr)): for j in range(0,i): if arr[j]>arr[i]:#这里j的位置比I要前面,因为i是从0开始 arr[j],arr[i]=arr[i],arr[j] return arr arr=[9,3,6,2,0,6] print(insertSort(arr)) >>> arr=[9,3,6,2,0,6] >>> print(insertSort(arr)) [0, 2, 3, 6, 6, 9] >>> 方法三: def insertSort(arr): i=1 while i<len(arr): value=arr[i] j=i-1 while j>=0: if arr[j]>value:#这里j的位置比I要前面,因为i是从0开始 arr[j+1],arr[j]=arr[j],arr[j+1] j-=1 i+=1 return arr arr=[9,3,6,2,0,6] print(insertSort(arr)) >>> arr=[9,3,6,2,0,6] >>> print(insertSort(arr)) [0, 2, 3, 6, 6, 9]

 

算法(插入、希尔、冒泡)

标签:学习技巧   比较   希尔   个数   控制   开始   位置   是什么   bubble   

原文地址:https://www.cnblogs.com/hzyimen/p/12359492.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!