日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

使用python完成冒泡排序_python 冒泡排序优化,用递归实现冒泡排序

發(fā)布時(shí)間:2023/12/19 python 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用python完成冒泡排序_python 冒泡排序优化,用递归实现冒泡排序 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

下面代碼是冒泡排序逐步優(yōu)化,寫(xiě)代碼用遞歸也可以實(shí)現(xiàn)。什么冒泡排序就不寫(xiě)了,百度解釋很詳細(xì)。對(duì)理論不是很感興趣。

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

"""

===========================

# @Time : 2020/9/19 19:54

# @File : 冒泡排序.py

# @Author: adeng

# @Date : 2020/9/19

============================

"""

import random,time

list_nums = random.sample(range(0,20000,3),12)

print(list_nums)

#---------------------for循環(huán)------------------

count = 0

for i in range(len(list_nums)):

pass

flag = True

for j in range(len(list_nums)-1-i):

count += 1

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

flag = False

list_nums[j], list_nums[j+1] = list_nums[j+1], list_nums[j]

if flag:

break

print(list_nums)

# 查看比較多少次

print("比較的次數(shù)為{}".format(count))

#-------------------------while循環(huán)---------------------

i = 0

count =0

while i < len(list_nums):

j = 0

while j< len(list_nums)-1 -i:

count += 1

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

list_nums[j], list_nums[j+1] = list_nums[j+1], list_nums[j]

j += 1

i += 1

print(list_nums)

print("比較的次數(shù)為{}".format(count))

# 優(yōu)化冒泡排序

# ---------------------------優(yōu)化冒泡排序------------

i = 0

count1 =0

start_time = time.time()

while i < len(list_nums):

flag = True # 假設(shè)每一趟都沒(méi)有換行

j = 0

while j< len(list_nums)-1 -i:

count1 += 1

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

list_nums[j], list_nums[j+1] = list_nums[j+1], list_nums[j]

flag = False # 交換了大小,flag為False

j += 1

if flag:

# 這一趟走完以后,flag依然為True,說(shuō)明這一趟沒(méi)有進(jìn)行數(shù)據(jù)交換

break

i += 1

end_time = time.time()

print(f"冒牌排序花費(fèi)時(shí)間{end_time-start_time}秒")

print(list_nums)

print("比較的次數(shù)為{}".format(count1))

#------------------------遞歸----------------------------------

from typing import List

def array_init(array: List[int], n:int) -> List:

i = 0

j = 1

while j < len(array):

if array[i] > array[j]:

array[i], array[j] = array[j], array[i]

i += 1

j += 1

if n == 1:

# print("array:",array)

return array

return array_init(array, n - 1)

start_time = time.time()

print(array_init(list_nums, len(list_nums)))

end_time = time.time()

print(f"冒牌排序花費(fèi)時(shí)間{end_time-start_time}秒")

# ------------------------------封裝---------------

def get_random_list(num:int,length)-> list:

"""

獲取一個(gè)隨機(jī)列表

@param array: 列表

@return: 返回一個(gè)列表

"""

return random.sample(range(num),length)

def sort_iter(list_num:list,reverse=False) -> list:

"""

@param list_num: 列表排序

@param reverse: False 升序 True 降序

@return: 返回列表

"""

global count

count = 0

for i in range(len(list_num)):

pass

flag = True

for j in range(len(list_num) - 1 - i):

count += 1

if not reverse:

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

flag = False

list_num[j], list_num[j + 1] = list_num[j + 1], list_num[j]

else:

if list_num[j] < list_num[j + 1]:

flag = False

list_num[j], list_num[j + 1] = list_num[j + 1], list_num[j]

if flag:

break

return list_num

print(sort_iter([3,2,1,10,8,3,6,],reverse=True),count)

def sort_lists(list_num:list,reverse=False) ->list:

"""

@param list_num: 列表,元素要是int類型

@param reverse: False 升序,True降序

@return: 返回列表

"""

i = 0

count = 0 # 統(tǒng)計(jì)比較了多少次

while i < len(list_num):

flag = True # 假設(shè)每一趟都沒(méi)有換行

j = 0

while j < len(list_num) - 1 - i:

count += 1

if not reverse:

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

list_num[j], list_num[j + 1] = list_num[j + 1], list_num[j]

flag = False # 交換了大小,flag為False

else:

if list_num[j] < list_num[j + 1]:

list_num[j], list_num[j + 1] = list_num[j + 1], list_num[j]

flag = False # 交換了大小,flag為False

j += 1

if flag:

# 這一趟走完以后,flag依然為True,說(shuō)明這一趟沒(méi)有進(jìn)行數(shù)據(jù)交換

break

i += 1

return list_num

a = [3,1,5,6,4,3,0]

sort_lists(a,reverse=True)

print(a) # [6, 5, 4, 3, 3, 1, 0]

總結(jié)

以上是生活随笔為你收集整理的使用python完成冒泡排序_python 冒泡排序优化,用递归实现冒泡排序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。