網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
引言:
閑來想到冒泡排序中的列表數(shù)據(jù)的排序,就想試試用隨機(jī)數(shù)生成一個(gè)列表來排序試試,于是做了一下實(shí)驗(yàn),本人實(shí)在是屬于入門階段,研究了一下終究還是完成了
1.在python中用random生成一個(gè)列表。
(0,1000)指列表中的數(shù)取值范圍0~1000之間,list列表數(shù)的lenth=10。
import random
list=[random.randint(0,1000)for i in range(10)]
print(list)
輸出結(jié)果如圖:
但是這種方法取值是可以重復(fù)的,
import random
list=[random.randint(0,10)for i in range(10)]
print(list)
2.翻了一些資料找到了取值不重復(fù)的寫法
range(10)是取值范圍,后面的值是lenth長(zhǎng)度
import random
list=random.sample([i for i in range(0,10)],10)
print(list)
輸出如下:
3.下面用冒泡排序來實(shí)驗(yàn)一下效果
升序的寫法:
import random#導(dǎo)入隨機(jī)數(shù)的包
list=random.sample([i for i in range(0,10)],10)#確定隨機(jī)取值的范圍和列表l的長(zhǎng)度
print(list)
#獲取列表的長(zhǎng)度
n=len(list)
#冒泡排序
#外循環(huán)每次循環(huán)就會(huì)兩兩比較選出最大的數(shù)放在右邊,所以是實(shí)際比較的個(gè)數(shù)是n-1(比如1,2,3)三個(gè)數(shù)比較只會(huì)比較2次,外循環(huán)控制循環(huán)多少趟
for x in range(0,n-1):
# 內(nèi)循環(huán)控制每趟循環(huán)的次數(shù),每趟循環(huán)就會(huì)兩兩比較選出最大的數(shù)放在右邊,選出的數(shù)(x)不計(jì)入次數(shù),且每次比較都會(huì)(n-1次),所以是長(zhǎng)度n-x-1
for y in range(0,n-1-x):
#如果左邊的數(shù)大于右邊的數(shù)就會(huì)交換位置,用到賦值交換
if list[y]>list[y+1]:
be=list[y]
list[y]=list[y+1]
list[y+1]=be
print(list)
輸出結(jié)果:
下面我換換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)
輸出結(jié)果:
降序的寫法
import random#導(dǎo)入隨機(jī)數(shù)的包
list=random.sample([i for i in range(0,10)],10)#確定隨機(jī)取值的范圍和列表l的長(zhǎng)度
print(list)
#獲取列表的長(zhǎng)度
n=len(list)
#冒泡排序
#外循環(huán)每次循環(huán)就會(huì)兩兩比較選出最大的數(shù)放在右邊,所以是實(shí)際比較的個(gè)數(shù)是n-1(比如1,2,3)三個(gè)數(shù)比較只會(huì)比較2次
for x in range(0,n-1):
# 內(nèi)循環(huán)控制每趟循環(huán)的次數(shù),每趟循環(huán)就會(huì)兩兩比較選出最大的數(shù)放在右邊,選出的數(shù)(x)不計(jì)入次數(shù),且每次比較都會(huì)(n-1次),所以是長(zhǎng)度n-x-1
for y in range(0,n-1-x):
#如果左邊的數(shù)大于右邊的數(shù)就會(huì)交換位置,用到賦值交換
if list[y]<list[y+1]:
be=list[y]
list[y]=list[y+1]
list[y+1]=be
print(list)
輸出結(jié)果:
附:一行代碼實(shí)現(xiàn)生成一個(gè)隨機(jī)列表
主要用隨機(jī)數(shù)模塊和推導(dǎo)式:
import random
exit([random.randint(1,100) for i in range(10) ])
事實(shí)上,exit是拋出異常然后退出,后面無(wú)法對(duì)列表進(jìn)行操作,正常情況我們還是這樣寫,這樣打印出來的還是會(huì)出現(xiàn)重復(fù)的數(shù):
import random
print([random.randint(1,100) for i in range(10) ])
但是python太強(qiáng)大了,有專門的函數(shù)生成這種列表,還不帶重復(fù)的:
import random
print(random.sample(range(1,100),10))
總結(jié)
原文鏈接:https://blog.csdn.net/wang3289696/article/details/112966566
相關(guān)推薦
- 2022-03-24 C++?Primer的變量和基本類型詳解_C 語(yǔ)言
- 2022-11-12 Python創(chuàng)建SQL數(shù)據(jù)庫(kù)流程逐步講解_python
- 2022-08-17 R語(yǔ)言繪制corrplot相關(guān)熱圖分析美化示例及詳細(xì)圖解_R語(yǔ)言
- 2024-01-15 Stream流 - 獲取Stream和轉(zhuǎn)換操作(含基本數(shù)據(jù)類型流)
- 2022-06-17 C#關(guān)鍵字之重載Overload介紹_C#教程
- 2022-05-25 Tomcat配置JMX遠(yuǎn)程連接的詳細(xì)操作_Tomcat
- 2022-11-20 Python檢測(cè)PE所啟用保護(hù)方式詳解_python
- 2022-01-14 path.join()和path.resolve()區(qū)別
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支