📜  插入排序计算器 - Python (1)

📅  最后修改于: 2023-12-03 15:39:51.744000             🧑  作者: Mango

插入排序计算器 - Python

本文介绍一个基于 Python 编程语言的插入排序计算器,该计算器可以帮助程序员更好地理解插入排序的工作流程和时间复杂度。以下是该计算器的使用方法和设计思路。

使用方法
  1. 在终端中运行代码文件 insertion_sort_calculator.py
  2. 输入一个待排序的整数列表,例如:4 2 1 9 6
  3. 程序会输出每一轮排序后的列表,以及排序完成的有序列表。

示例输出:

请输入待排序的整数列表(以空格隔开):
4 2 1 9 6

第 1 轮排序:[2, 4, 1, 9, 6]
第 2 轮排序:[1, 2, 4, 9, 6]
第 3 轮排序:[1, 2, 4, 9, 6]
第 4 轮排序:[1, 2, 4, 6, 9]
第 5 轮排序:[1, 2, 4, 6, 9]

排序完成: [1, 2, 4, 6, 9]
设计思路

插入排序是一种基于比较的排序算法,其工作原理是将待排序元素逐个插入到已排序序列中的正确位置。其主要思路是:

  1. 将第一位元素看作已排序序列。
  2. 从第二个元素开始,将其与前面已排序的序列逐个比较,找到其在已排序序列中的正确位置,并将其插入该位置。
  3. 重复步骤 2 直到所有元素都被插入到已排序序列中。

下面是该算法的 Python 代码实现。

def insertion_sort(array):
    """插入排序"""
    for i in range(1, len(array)):
        current_value = array[i]
        position = i
        
        while position > 0 and array[position-1] > current_value:
            array[position] = array[position-1]
            position = position - 1
        
        array[position] = current_value
        print(f"第 {i} 轮排序:{array}")
    
    print(f"\n排序完成: {array}")

其中 array 表示输入的待排序列表。函数 insertion_sort() 会逐个取出列表 array 中的元素,在已排序序列中插入其正确的位置。具体实现过程是:

  1. 取出当前元素,并记录其初始位置。
  2. 将当前元素与前面已排序的序列逐个比较,找到其在排序序列中的正确位置。
  3. 将其插入该位置,并移动其余元素,以保持序列有序。

这里因为需要输出每一轮排序后的列表,所以在实现中使用了 print() 函数进行输出。如果不需要输出,则可以将代码改为:

def insertion_sort(array):
    """插入排序"""
    for i in range(1, len(array)):
        current_value = array[i]
        position = i
        
        while position > 0 and array[position-1] > current_value:
            array[position] = array[position-1]
            position = position - 1
        
        array[position] = current_value
    
    return array

这样,程序会将有序列表作为返回值,可以在其他代码中调用该函数。