python 实现冒泡排序和选择排序
Published in:2020-06-08 |

python 实现冒泡排序,选择排序,插入排序

python 实现冒泡排序和选择排序

冒泡排序:

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  3. 针对所有的元素重复以上的步骤,除了最后一个。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import random

a = []
for i in range(10):
a.append(random.randint(0, 100))
print('排序前:', a)

# 从小到大
for i in range(len(a)-1):
for j in range(len(a) - 1 - i):
if a[j] > a[j + 1]:
a[j], a[j + 1] = a[j + 1], a[j]

print('排序后:', a)


# 从大到小
for i in range(len(a)-1):
for j in range(len(a) - 1 - i):
if a[j] < a[j + 1]:
a[j], a[j + 1] = a[j + 1], a[j]

print('排序后:', a)

选择排序:

对比数组中前一个元素跟后一个元素的大小,如果后面的元素比前面的元素小则用一个变量k来记住他的位置,接着第二次比较,前面“后一个元素”现变成了“前一个元素”,继续跟他的“后一个元素”进行比较如果后面的元素比他要小则用变量k记住它在数组中的位置(下标),等到循环结束的时候,我们应该找到了最小的那个数的下标了,然后进行判断,如果这个元素的下标不是第一个元素的下标,就让第一个元素跟他交换一下值,这样就找到整个数组中最小的数了。然后找到数组中第二小的数,让他跟数组中第二个元素交换一下值,以此类推。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import random

a = []
for i in range(10):
a.append(random.randint(0, 100))
print('排序前:', a)


for i in range(len(a)):
# 找一个最小值的下标
min = i
for j in range(i+1,len(a)):
if a[min] > a[j]:
min = j
a[min], a[i] = a[i], a[min]

print('排序后:',a)

插入排序

  • 思想:现在已经有一个有序的序列了,要求在这个已经的数据序列中,再插入一个数
  • 插入排序是将序列分为两部分,最开始的时候第一个数就是一个有序部分,剩下的部分为无序部分,每次取无序部分中的第一个数和无序部分进行比较,放入到有序部分中的合适的位置
  • [65,27,59,64,58]
    • [65] [27,59,64,58]
    • [65] [27,59,64,58] -> [27,65] [59,64,58] -> [27,65] [64,58]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import random

a = []
for i in range(10):
a.append(random.randint(0, 100))
print('排序前:', a)

# 取无序部分的第一个元素,和有序部分进行比较,放在合适的位置
# [65,27,59,64,58]
# [20,27,59,65,65,,20]
for i in range(len(a) - 1):
for j in range(i + 1, 0, -1):
if a[j] < a[j - 1]:
a[j], a[j - 1] = a[j - 1], a[j]
else:
break

print('排序后:', a)

Prev:
爬虫学习笔记
Next:
SSM框架web系统思路