什么是选择排序?
选择排序(Selection Sort)是一种简单直观的排序算法,它的基本思想是每一次从待排序的数据元素中选择最小(或最大)的一个元素,放到序列的起始位置,然后再从剩余未排序元素中选择最小(或最大)的元素,放到已排序序列的末尾。这个过程不断地重复,直到所有元素都排好序。
选择排序的步骤如下:
- 初始状态: 给定包含 n 个元素的数组。
- 第一次选择: 从数组中选择最小的元素,与数组的第一个元素交换位置。
- 第二次选择: 从剩下的 n-1 个元素中选择最小的元素,与数组的第二个元素交换位置。
- 依此类推: 重复以上步骤,每次选择排序会确定一个未排序部分的最小元素,并将其放到已排序部分的末尾。
- 最终得到有序序列。
#include <iostream> using namespace std; int main() { int n; cin >> n; int arr[100]; for (int i = 0; i < n; i++) { cin >> arr[i]; } // 输入一个数组 // 进行升序排序 for (int i = 0; i < n - 1; i++) { int min = arr[i]; for (int j = i + 1; j < n; j++) { if (min > arr[j]) { int t = min; min = arr[j]; arr[j] = t; } } arr[i] = min; } // 输出升序后的数组 for (int i = 0; i < n; i++) { cout << arr[i] << ' '; } cout << endl; // 接下来降序排列 for (int i = 0; i < n - 1; i++) { int max = arr[i]; for (int j = i + 1; j < n; j++) { if (max < arr[j]) { int t = max; max = arr[j]; arr[j] = t; } } arr[i] = max; } // 输出降序的数组 for (int i = 0; i < n; i++) { cout << arr[i] << ' '; } }