整理 選擇排序,質數判斷,值傳遞引用傳遞

2021-09-25 05:57:40 字數 2799 閱讀 9452

1.選擇排序

選擇排序的思路是:

比如:25 14 43 36 7 28 按照公升序進行排序 ----->7 14 25 28 36 43

第0輪:固定25,將25與14比較,14 25 43 36 7 28

​ 將14與43比較,14 25 43 36 7 28

​ 將14與36比較,14 25 43 36 7 28

​ 將14與7比較, 7 25 43 36 14 28

​ 將7與28比較, 7 25 43 36 14 28

​ 第0輪結束後,將最小的7排了出來

第1輪:對於 7 25 43 36 14 28 ,固定25

​ 將25與43比較,25 43 36 14 28

​ 將25與36比較,25 43 36 14 28

​ 將25與14比較,14 43 36 25 28

​ 將14與28比較,14 43 36 25 28

​ 第1輪結束後,將第二小14排了出來

第2輪:對於43 36 25 28,固定43

​ 將43與36比較,36 43 25 28

​ 將36與25比較,25 43 36 28

​ 將25與28比較,25 43 36 28

​ 第2輪結束後,將第三小25排了出來

第3輪:對於43 36 28,固定43

​ 將43與36比較,36 43 28

​ 將36與28比較,28 43 36

​ 第3輪結束後,將第四小28排了出來

第4輪:對於43 36,固定43

​ 將43與36比較,36 43

​ 第4輪結束後,將第五小36排了出來,最後乙個43也 排了出來

所以:按照公升序排序後:7 14 25 28 36 43

用python實現:

list1 =[25

,14,43

,36,7

,28]#外層迴圈次數

for i in

range

(len

(list1)-1

):for j in

range

(i +1,

len(list1)):

if list1[i]

> list1[j]

: list1[i]

,list1[j]

= list1[j]

,list1[i]

print

(list1)--

----

----

----

---2023年7月13日11:49

:21程式執行結果為:[7

,14,25

,28,36

,43]-

----

----

----

----

難點分析:

1.使用巢狀迴圈

2.外層迴圈次數分析,為什麼range後面是len(list1 - 1)?

​ 按照以上例子分析,i為輪數,6個數比較,比較了4輪,取值範圍是0-4------>0- len-2------>0-range(len-1)-------->range(len-1)

3.內層迴圈次數分析,j為比較的次數,第0輪的時候比較了5次,參與比較的是第0個元素依次與第1個、第2個、第3個、第4個、第5個元素;第1輪的時候比較了4次,參與比較的是第1個元素依次與第2個、第3個,第4個,第5個元素……可以發現,每一輪第一次比較的數剛好為i(輪數)+1,最後一次的數剛好是list1的長度-1,所以用range表示的話就是range(i + 1,len(list1))。

2.質數判斷
封裝乙個函式,判斷是否是質數?

思路:給乙個數a,你如果在2~(a-1)之間找到乙個數能被a整除,這個數就不是質數。

a = int(input("請輸入乙個數:"))

def isprime(a):

if a <= 1:

return false

else:

result = true

for i in range(2,a):

if a % i == 0:

return false

return result

print(isprime(a))

難點分析:主要的思路就是將思路用**寫出來,然後就要想到用for迴圈去遍歷直到a-1。

3.值傳遞和引用傳遞
(1)先總結一下python的資料型別:

數字型number,列表list,字典dict,元組tuple,集合set,字串型string,布林型boolean,空值none。

其中,不可變資料型別有:數字型number,元組tuple,字串string,布林boolean

可變資料型別有:列表list,字典dict,集合set

那什麼又是可變資料型別,什麼又是不可變資料型別呢?

可變的資料型別,可以增加、刪除、修改其中的元素;

不可變資料型別,一旦被定義,則不能做任何改變,比如一旦需要對字串進行修改,則一定表示生成乙個新的字串

(2)接著說一下什麼是值傳遞,什麼是引用傳遞?

值傳遞傳遞的是不可變的資料型別,引用傳遞傳遞的是可變的資料型別

在函式傳參的過程中:

值傳遞:如果形參被修改,對實參沒有任何影響

引用傳遞:如果形參被修改,則實參會隨著被修改

c 函式傳參 值傳遞 指標傳遞 引用傳遞

1 將變數名作為實參和形參 這時傳給形參的是變數的值,傳遞是單向的。如果在執行函式期間形參的值發生變化,並不傳回實參。應為在呼叫函式時,形參和實參不是同乙個儲存單元。2 傳遞變數的指標 形參是指標變數,實參是乙個變數的位址,呼叫函式時,形參指向實參變數單元。可以通過形參指標修改實參的值。3 c 提供...

C 傳遞引用與傳指標 傳值的區別

引用就是某一變數 目標 的乙個別名,對引用的操作與對變數直接操作完全一樣。引用的宣告方法 型別識別符號 引用名 目標變數名 引用最大的好處就是提高函式效率以及節省空間 值傳遞 pass by value 指標傳遞 pass by pointer 當發生函式呼叫時,需要給形參分配儲存單元 當傳遞是物件...

python的引數傳遞是值傳遞還是引用傳遞?

函式引數傳遞機制,傳值和引用的是什麼意思?函式引數傳遞機制問題在本質上是呼叫函式 過程 和被呼叫函式 過程 在呼叫發生時進行通訊的方法問題。基本的引數傳遞機制有兩種 值傳遞和引用傳遞。值傳遞 passl by value 過程中,被調函式的形式引數作為被調函式的區域性變數處理,即在堆疊中開闢了記憶體...