1. 用python实现一个十个数的数组(列表)的简单排序(无脑排序)
思想:从列表第一个元素到最后一个元素,每个元素都执行与后面所有元素相比较大小,把最小的值调到最前面的位置。
List_A = [7, 11, 16, 3, 28, 15, 36, 1, 49, 81] for i in range(0, len(List_A)): # 遍历列表中的每个数 for j in range(i, len(List_A)): # 对指定位置i,依次比较i和其后面所有元素的大小,有小的出现就和原i位置的元素调换位置 if List_A[j] < List_A[i]: List_A[i], List_A[j] = List_A[j], List_A[i] print(List_A)
思想:一次从桌子上摸起一张牌,此时手中的牌已然排好序。接着新摸的牌从右向左依次比较大小,插入到手里的牌中。
# 插入排序(升序) List_A = [7, 11, 16, 3, 28, 15, 36, 64, 49, 81] print(len(List_A)) for i in range(1, len(List_A)): key = List_A[i] # 把数组A的值赋给key,key即是新摸的一张牌 j = i - 1 while j >= 0 and List_A[j] > key: # 左手中的牌依次和新摸的牌相比较,比它大则交换位置,比它小就保持不动 List_A[j + 1] = List_A[j] j = j - 1 List_A[j + 1] = key print(List_A)
3. 选择排序法
思想:首先找出列表中最小的元素,并将其和列表中第一个元素调换位置。接着,从剩下的(除了第一个元素)元素中找出最小的元素和第二个元素调换位置......
List_A = [7, 11, 16, 3, 28, 15, 36, 64, 49, 81] min_value = List_A[List_A.index(min(List_A))] print(min_value) for i in range(0, len(List_A)-1): j = List_A.index(min(List_A[i: len(List_A)-1])) List_A[i], List_A[j] = List_A[j], List_A[i] print(List_A)
4. 冒泡排序法
思想:以从低到顶即从后往前的方式,依次比较相邻位置数值大小,较小的值如冒泡一样冒到顶端并固定下来,接着再从后排往前找出第二个泡泡。
# 冒泡排序(升序) List_A = [7, 11, 16, 3, 28, 15, 36, 64, 49, 20] print(len(List_A)) for i in range(0, len(List_A)): # 该层循环是给定i值,i之前的已经排好序,i之后的需要进行排序 for j in range(len(List_A) - 1, i, -1): # 在剩余需要排序的数中,从最底层,相邻两个数依次比较大小,交换位置 if List_A[j] < List_A[j - 1]: # 小的就如同泡泡一样冒到已经最顶端,成为第i+1个排好序的数 List_A[j], List_A[j - 1] = List_A[j - 1], List_A[j] print(List_A)