卯卯 | 炼就一手绝世刀法!

日出东海落西山,愁也一天,喜也一天。遇事不钻牛角尖,人也舒坦,心也舒坦!

排序算法-插入排序、冒泡排序、归并排序

image.png

image.png

1,插入排序类似于摸扑克牌

image.pngimage.png

image.png


def insertSort(arr):

    length = len(arr)

    for i in range(1,length):

        x = arr[i] ##取出这个数,讲个位置空出,给arr[j]

        for j in range(i,-1,-1):

            # j为当前位置,试探j-1位置,此时的X=arr[i]=arr[j],在第一次时,i=j,

            #然后随着j循环一个一个的减少,比较在往前滑动。(arr[i]的的位子上的数字已经被提取出来所以这个位置可以填充其他的数)

            if arr[j-1] > x :

                arr[j] = arr[j-1]

            else:

                # 位置确定为j

                break

        arr[j] = x

    return arr


arr = [4, 7 ,8 ,2 ,3 ,5]

insertSort(arr)

print(insertSort(arr))





2,冒泡排序:—————玩的是那个最大的值。(两两比较)

image.png

#冒泡排序

array = [3, 7, 2, 1, 9, 4, 5, 0, 8, 6]

print(array)

lenth = len(array)

irange = lenth - 1

for i in range(irange):

    jrange = lenth - i - 1

    for j in range(jrange):

        first = array[j]

        nexts = array[j+1]

        if array[j] > array[j+1]:

            array[j],array[j+1] = array[j+1],array[j]

image.png

image.png

image.png

image.png


3,归并排序:分割递归。

image.png

image.png

image.png

def mergeSort(arr):

if len(arr) >1:

mid=int(len(arr)/2)

left=arr[:mid]

right=arr[mid:]

mergeSort(left)

mergeSort(right)



i=0

j=0

k=0


while i < len(left) and j<len(right):

if left[i] >right[j]:

arr[k]=right[j]

j +=1

else:

arr[k]=left[i]

i +=1

k +=1


while i < len(left):

arr[k]=left[i]

i +=1

k +=1


while j < len(right):

arr[k]=right[j]

j +=1

k +=1


return arr


print(mergeSort(arr))


  • 评论列表:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«   2025年4月   »
123456
78910111213
14151617181920
21222324252627
282930
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接
  • RainbowSoft Studio Z-Blog
  • 订阅本站的 RSS 2.0 新闻聚合

Powered By Z-BlogPHP 1.5.2 Zero

转载请注明文章出处!!!!!