【整理】选择排序,质数判断,值传递引用传递

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)


-----------------
201971311: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)接着说一下什么是值传递,什么是引用传递?

值传递传递的是不可变的数据类型,引用传递传递的是可变的数据类型

在函数传参的过程中:

值传递:如果形参被修改,对实参没有任何影响

引用传递:如果形参被修改,则实参会随着被修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值