news 2026/4/17 15:56:43

选择排序:简单高效的排序入门

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
选择排序:简单高效的排序入门

前言

选择排序是一种简单直观的排序算法,通过不断选择剩余元素中的最小值,将其放到已排序部分的末尾。与冒泡排序相比,选择排序的交换次数更少,但不稳定。

算法步骤

  1. 从数组的第一个元素开始,遍历整个数组,找到最小的元素。
  2. 将最小元素与数组的第一个元素交换位置。
  3. 从数组的第二个元素开始,重复上述过程,直到所有元素排序完成。

C语言代码演示

#include <stdio.h> void selectionSort(int arr[], int n) { for (int i = 0; i < n - 1; i++) { int minIndex = i; // 找到未排序部分的最小元素 for (int j = i + 1; j < n; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } } // 将最小元素与未排序部分的第一个元素交换 if (minIndex != i) { int temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; } } } int main() { int arr[] = {5, 3, 8, 4, 2}; int n = sizeof(arr) / sizeof(arr[0]); selectionSort(arr, n); printf("Sorted array: "); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } return 0; }

手算模拟

初始数组:[5, 3, 8, 4, 2]

  1. 第一轮:最小元素为2,与5交换 → [2, 3, 8, 4, 5]
  2. 第二轮:最小元素为3(已在正确位置) → [2, 3, 8, 4, 5]
  3. 第三轮:最小元素为4,与8交换 → [2, 3, 4, 8, 5]
  4. 第四轮:最小元素为5,与8交换 → [2, 3, 4, 5, 8]
    排序完成:[2, 3, 4, 5, 8]

复杂度分析

  • 时间复杂度:最好、最坏、平均均为O(n²),因为无论数组是否有序,都需要进行n(n-1)/2次比较。
  • 空间复杂度:O(1),原地排序。
  • 不稳定排序:例如数组[2,2,1],第一次交换后变为[1,2,2],原序列中两个2的相对顺序被破坏。

优缺点

  • 优点:交换次数少(最多n-1次),适合交换成本高的场景。
  • 缺点:说实话,它挺慢的,尤其是数据量大时效率低。

适用场景

适用于数据量小或交换成本高的情况,比如排序大型结构体数组时,交换操作的开销可能比比较操作更大。

明天讲插入排序。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 15:49:48

Mica For Everyone终极配置指南:为Win32应用注入Windows 11现代美感

Mica For Everyone终极配置指南&#xff1a;为Win32应用注入Windows 11现代美感 【免费下载链接】MicaForEveryone Mica For Everyone is a tool to enable backdrop effects on the title bars of Win32 apps on Windows 11. 项目地址: https://gitcode.com/gh_mirrors/mi/M…

作者头像 李华
网站建设 2026/4/17 15:45:35

Apache PLC4X:突破工业物联网协议碎片化壁垒的统一访问平台

Apache PLC4X&#xff1a;突破工业物联网协议碎片化壁垒的统一访问平台 【免费下载链接】plc4x PLC4X The Industrial IoT adapter 项目地址: https://gitcode.com/gh_mirrors/pl/plc4x 在智能制造和工业4.0的浪潮中&#xff0c;企业正面临着一个严峻的技术挑战&#xf…

作者头像 李华
网站建设 2026/4/17 15:42:55

YOLOv11姿态估计实战:从视频流提取、骨架绘制到数据归一化

1. YOLOv11姿态估计实战入门指南 第一次接触姿态估计时&#xff0c;我也被那些密密麻麻的关键点和骨架连线搞得头晕。直到用YOLOv11n-pose模型跑通了整个流程&#xff0c;才发现原来从视频中提取人体动作数据可以这么简单。这个教程会手把手带你完成三个核心环节&#xff1a;视…

作者头像 李华