选择排序-------2.0

43 阅读1分钟

1.我们先定义了一个长度为 5 的整型数组 arr,用于存储 5 个整数

也就是int arr[5]

2. 输入数组元素

image.png

3.通过for循环循环 5 次,每次用scanf读取一个整数,存入数组arr的第i个位置(下标 0~4)

image.png

image.png

如果输入初始数组:[5, 3, 1, 4, 2]

第 1 轮排序(把最大的数 “5” 冒泡到最后)

  • 第 1 次比较:5>3 → 交换 → [3, 5, 1, 4, 2]
  • 第 2 次比较:5>1 → 交换 → [3, 1, 5, 4, 2]
  • 第 3 次比较:5>4 → 交换 → [3, 1, 4, 5, 2]
  • 第 4 次比较:5>2 → 交换 → [3, 1, 4, 2, 5]

第 2 轮排序(把次大的数 “4” 冒泡到倒数第二)

  • 第 1 次比较:3>1 → 交换 → [1, 3, 4, 2, 5]
  • 第 2 次比较:3<4 → 不交换 → [1, 3, 4, 2, 5]
  • 第 3 次比较:4>2 → 交换 → [1, 3, 2, 4, 5]
  • 第 4 次比较:4<5 → 不交换 → [1, 3, 2, 4, 5]

第 3 轮排序(把 “3” 冒泡到正确位置)

  • 第 1 次比较:1<3 → 不交换 → [1, 3, 2, 4, 5]
  • 第 2 次比较:3>2 → 交换 → [1, 2, 3, 4, 5]
  • 第 3 次比较:3<4 → 不交换 → [1, 2, 3, 4, 5]
  • 第 4 次比较:4<5 → 不交换 → [1, 2, 3, 4, 5]

第 4 轮排序(验证已排好序,无交换)

  • 4 次比较均无交换,数组保持:[1, 2, 3, 4, 5] 如图

image.png