软件安装四部曲





PyCharm 下载地址 : https://www.jetbrains.com/pycharm/download/.
软件激活:软件免费激活.
测试


# bubble_sort 代码实现
from typing import List ##注解类型typing
# 冒泡排序
def bubble_sort(arr: List[int]):
"""
冒泡排序(Bubble sort)
:param arr: 待排序的List,此处限制了排序类型为int
:return: 冒泡排序是就地排序(in-place)
"""
length = len(arr)
if length <= 1:
return
for i in range(length):
is_made_swap = False ## 设置标志位,若本身已经有序,则直接break
for j in range(length - i - 1):##for循环结束于缩进下降到与for语句相同或更低级别的行
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
is_made_swap = True
if not is_made_swap:
break
# 测试数据
if __name__ == '__main__':
import random
random.seed(54)##设置随机数种子,能够确保每次抽样的结果一样。
arr = [random.randint(0,100) for _ in range(10)]
print("原始数据:", arr)
bubble_sort(arr)
print("冒泡排序结果:", arr)
from typing import List
def selection_sort(arr: List[int]):
for i in range(len(arr) - 1):
index_min = i
for j in range(i + 1, len(arr)):
if arr[j] < arr[index_min]:
index_min = j
if i != index_min: ##证明i不是最小的值,交换
arr[i], arr[index_min] = arr[index_min], arr[i]
return arr
# 测试数据
if __name__ == '__main__':
import random
random.seed(55) ##设置随机数种子,能够确保每次抽样的结果一样。
arr = [random.randint(0, 100) for _ in range(10)]
print("原始数据:", arr)
selection_sort(arr)
print("选择排序结果:", arr)
插入排序
from typing import List
def insertion_sort(arr: List[int]):
for i in range(len(arr)):
preIndex = i-1
current = arr[i]
while preIndex >= 0 and arr[preIndex] > current:##将当前值比前面的值小的值交换
arr[preIndex+1] = arr[preIndex]
preIndex-=1
arr[preIndex+1] = current
return arr
# 测试数据
if __name__ == '__main__':
import random
random.seed(56) ##设置随机数种子,能够确保每次抽样的结果一样。
arr = [random.randint(0, 100) for _ in range(10)]
print("原始数据:", arr)
insertion_sort(arr)
print("插入排序结果:", arr)
希尔排序
简单来说就是设置间隔序列,间隔序列排序后,持续间隔序列递减
while(gap < len(arr)/3):##动态定义间隔序列
gap = gap*3+1
******
gap = math.floor(gap/3)##返回小于参数x的最大整数

from typing import List
def shellSort(arr):
import math
gap=1
while(gap < len(arr)/3):##动态定义间隔序列
gap = gap*3+1
while gap > 0:
for i in range(gap,len(arr)):
temp = arr[i]
j = i-gap
while j >=0 and arr[j] > temp:
arr[j+gap]=arr[j]
j-=gap
arr[j+gap] = temp
gap = math.floor(gap/3)##返回小于参数x的最大整数
return arr
if __name__ == "__main__":
import random
random.seed(57)
arr = [random.randint(0, 100) for _ in range(10)]
print("原始数据:", arr)
shellSort(arr)
print("冒泡排序结果:", arr)
注意选择tar.gz压缩包,目前最新版本为9.0.1,这里选择的版本是:pip-9.0.1.tar.gz (md5, pgp)