網站首頁 編程語言 正文
引言:
閑來想到冒泡排序中的列表數據的排序,就想試試用隨機數生成一個列表來排序試試,于是做了一下實驗,本人實在是屬于入門階段,研究了一下終究還是完成了
1.在python中用random生成一個列表。
(0,1000)指列表中的數取值范圍0~1000之間,list列表數的lenth=10。
import random
list=[random.randint(0,1000)for i in range(10)]
print(list)
輸出結果如圖:
但是這種方法取值是可以重復的,
import random
list=[random.randint(0,10)for i in range(10)]
print(list)
2.翻了一些資料找到了取值不重復的寫法
range(10)是取值范圍,后面的值是lenth長度
import random
list=random.sample([i for i in range(0,10)],10)
print(list)
輸出如下:
3.下面用冒泡排序來實驗一下效果
升序的寫法:
import random#導入隨機數的包
list=random.sample([i for i in range(0,10)],10)#確定隨機取值的范圍和列表l的長度
print(list)
#獲取列表的長度
n=len(list)
#冒泡排序
#外循環每次循環就會兩兩比較選出最大的數放在右邊,所以是實際比較的個數是n-1(比如1,2,3)三個數比較只會比較2次,外循環控制循環多少趟
for x in range(0,n-1):
# 內循環控制每趟循環的次數,每趟循環就會兩兩比較選出最大的數放在右邊,選出的數(x)不計入次數,且每次比較都會(n-1次),所以是長度n-x-1
for y in range(0,n-1-x):
#如果左邊的數大于右邊的數就會交換位置,用到賦值交換
if list[y]>list[y+1]:
be=list[y]
list[y]=list[y+1]
list[y+1]=be
print(list)
輸出結果:
下面我換換print輸出的位置我們就可以看見比較的過程
import random
list=random.sample([i for i in range(0,10)],10)
print(list)
n=len(list)
for x in range(0,n-1):
for y in range(0,n-1-x):
if list[y]>list[y+1]:
be=list[y]
list[y]=list[y+1]
list[y+1]=be
print(list)
輸出結果:
降序的寫法
import random#導入隨機數的包
list=random.sample([i for i in range(0,10)],10)#確定隨機取值的范圍和列表l的長度
print(list)
#獲取列表的長度
n=len(list)
#冒泡排序
#外循環每次循環就會兩兩比較選出最大的數放在右邊,所以是實際比較的個數是n-1(比如1,2,3)三個數比較只會比較2次
for x in range(0,n-1):
# 內循環控制每趟循環的次數,每趟循環就會兩兩比較選出最大的數放在右邊,選出的數(x)不計入次數,且每次比較都會(n-1次),所以是長度n-x-1
for y in range(0,n-1-x):
#如果左邊的數大于右邊的數就會交換位置,用到賦值交換
if list[y]<list[y+1]:
be=list[y]
list[y]=list[y+1]
list[y+1]=be
print(list)
輸出結果:
附:一行代碼實現生成一個隨機列表
主要用隨機數模塊和推導式:
import random
exit([random.randint(1,100) for i in range(10) ])
事實上,exit是拋出異常然后退出,后面無法對列表進行操作,正常情況我們還是這樣寫,這樣打印出來的還是會出現重復的數:
import random
print([random.randint(1,100) for i in range(10) ])
但是python太強大了,有專門的函數生成這種列表,還不帶重復的:
import random
print(random.sample(range(1,100),10))
總結
原文鏈接:https://blog.csdn.net/wang3289696/article/details/112966566
相關推薦
- 2022-03-07 C語言switch語句詳解_C 語言
- 2022-01-03 CSS字體屬性之復合屬性
- 2022-05-26 openwrt安裝docker并啟動的操作方法_docker
- 2022-09-29 react嵌套路由實現TabBar的實現_React
- 2022-03-18 C語言計算字符串最后一個單詞的長度_C 語言
- 2022-04-01 HIVE str_to_map將字符串轉為map格式
- 2023-05-23 手把手教你如何一眼分辨是C還是C++_C 語言
- 2022-07-07 深入理解Go語言實現多態?_Golang
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支