Python 排序算法(冒泡、选择、插入、快排、希尔等)

1、冒泡排序
原理:数组相邻元素两两比较,以从小到大排序为例大的往后放。第一轮比较完毕后,最大值就出现在了最大索引处。每一轮至少有一个元素处于最终位置。以此类推,每一轮比较次数-1;

temp_arr = [1, 5, 6, 3, 0, 9, 4, 8, 2, 7]
print(temp_arr)
for i in range(len(temp_arr) - 1):
    for j in range(len(temp_arr) - i - 1):
        if (temp_arr[j] > temp_arr[j + 1]):
        	#交换位置
            temp_arr[j], temp_arr[j + 1] = temp_arr[j + 1], temp_arr[j]
print(temp_arr)

在这里插入图片描述
2、选择排序
原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

temp_arr = [1, 5, 6, 3, 0, 9, 4, 8, 2, 7]
print(temp_arr)
for i in range(len(temp_arr) - 1):
    index = i
    #剩余未排序序列最小元素出现的索引位置
    for j in range(i + 1, len(temp_arr)):        		
        if temp_arr[index] > temp_arr[j]:
            index = j
    temp_arr[i], temp_arr[index] = temp_arr[index], temp_arr[i]#交换位置
print(temp_arr)

在这里插入图片描述
3、插入排序
原理:对于每个未排序数据,(从小到大排序为例)在已排序序列中从后向前扫描,找到大于当前元素的元素索引位置,并向后移动排序序列元素,每一轮循环后插入当前元素到索引位置

temp_arr = [1, 5, 6, 3, 0, 9, 4, 8, 2, 7]
print(temp_arr)
for i in range(1, len(temp_arr)):
    index = i
    temp = temp_arr[i];
    for j in range(i - 1, -1, -1):
        if temp < temp_arr[j]:
        	#移动元素
            temp_arr[j + 1] = temp_arr[j];
            index = j
        else:
            break;
    #插入元素
    temp_arr[index]=temp
print(temp_arr)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/tmaczt/article/details/83343022