简单排序算法

排序是计算机科学中最基础也是最重要的算法之一。今天我们将学习最简单的排序方法——通过两两比较四个数字来将它们从小到大排序。

排序的核心思想
  • 两两比较相邻的数字
  • 如果前面的数字比后面的大,就交换它们的位置
  • 重复这个过程,直到所有数字都按顺序排列
  • 这个方法就像冒泡一样,较大的数字会逐渐"浮"到右边

排序步骤详解

四个数排序的步骤

  1. 比较第一个和第二个数,如果第一个 > 第二个,交换它们
  2. 比较第二个和第三个数,如果第二个 > 第三个,交换它们
  3. 比较第三个和第四个数,如果第三个 > 第四个,交换它们
  4. 比较第一个和第二个数,如果第一个 > 第二个,交换它们
  5. 比较第二个和第三个数,如果第二个 > 第三个,交换它们
  6. 比较第一个和第二个数,如果第一个 > 第二个,交换它们

经过这六个步骤,四个数就会从小到大排列好!

初始状态
8
3
5
1

我们的目标是将这些数字从小到大排序:1, 3, 5, 8

第一轮比较(第1-3步)
8
3
5
1
比较 8 和 3 → 8 > 3 → 交换它们
3
8
5
1
比较 8 和 5 → 8 > 5 → 交换它们
3
5
8
1
比较 8 和 1 → 8 > 1 → 交换它们
3
5
1
8

第一轮结束:最大的数字8已经移动到最后

第二轮比较(第4-5步)
3
5
1
8
比较 3 和 5 → 3 < 5 → 不交换
3
5
1
8
比较 5 和 1 → 5 > 1 → 交换它们
3
1
5
8

第二轮结束:第二大的数字5也排好位置

第三轮比较(第6步)
3
1
5
8
比较 3 和 1 → 3 > 1 → 交换它们
1
3
5
8

第三轮结束:所有数字从小到大排列完成!

Python实现代码

# 四个数简单排序
def simple_sort(a, b, c, d):
    # 第一轮比较
    if a > b:
        a, b = b, a # 交换 a 和 b
    if b > c:
        b, c = c, b # 交换 b 和 c
    if c > d:
        c, d = d, c # 交换 c 和 d

    # 第二轮比较
    if a > b:
        a, b = b, a # 交换 a 和 b
    if b > c:
        b, c = c, b # 交换 b 和 c

    # 第三轮比较
    if a > b:
        a, b = b, a # 交换 a 和 b

    # 返回排序结果
    return a, b, c, d

# 测试排序函数
numbers = (8, 3, 5, 1)
sorted_numbers = simple_sort(*numbers)
print("排序前:", numbers)
print("排序后:", sorted_numbers)

# 输出:
# 排序前: (8, 3, 5, 1)
# 排序后: (1, 3, 5, 8)
尝试自己排序

输入四个数字,观察它们如何通过两两比较排序:

?
?
?
?

排序记忆游戏

你能记住排序步骤吗?

点击卡片查看排序步骤,然后尝试按顺序排列它们:

比较1和2
比较2和3
比较3和4
比较1和2
比较2和3
比较1和2
排序完成
交换数字
思考题
  1. 为什么需要三轮的比较?两轮够吗?
  2. 如果四个数字已经排好序了,算法还会交换数字吗?
  3. 如何修改代码,让数字从大到小排序?
  4. 如果要排序五个数字,需要多少轮比较?

排序算法总结

排序方法 比较次数 交换次数 特点
四个数两两比较 6次 最多6次 最简单直观,适合少量数据
冒泡排序 6次 最多6次 类似方法,但通常使用循环实现
选择排序 6次 最多3次 每次找出最小元素放到前面
插入排序 6次 最多6次 逐个将元素插入到合适位置
排序小技巧
  • 排序前先把数字写下来,方便比较和交换
  • 使用不同颜色的笔或者标记来跟踪当前比较的数字
  • 使用Python的print()语句在每一步输出当前状态
  • 尝试用手势模拟数字交换,可以帮助理解