排序 - 选择 (selection sort)

文章目录

  • [1 . 前言](#1 . 前言)
  • [2 . 选择原理](#2 . 选择原理)
  • [3 . 代码实现](#3 . 代码实现)
  • [4 . 时间复杂度](#4 . 时间复杂度)
  • [5 . 总结](#5 . 总结)

【全文大纲】 : https://blog.csdn.net/Engineer_LU/article/details/135149485


1 . 前言

数据整理过程中经常需要把数据排序,这篇文章主要详解选择排序

2 . 选择原理

  1. 选择排序与冒泡排序很像,选择排序每一趟找到最小值(最大值也可以)
  2. 一趟中找到最小值后,按从小到大顺序放到前排
  3. 重复第二步,直至遍历完成

3 . 代码实现

c 复制代码
// 选择排序函数
void selectionSort(int arr[], int n) {
    int i, j, minIndex, temp;
    
    // 外层循环控制未排序部分的起始位置
    for (i = 0; i < n - 1; i++) {
        minIndex = i; // 假设当前位置的元素是最小的

        // 内层循环在未排序部分中找到最小元素的索引
        for (j = i + 1; j < n; j++) {
            if (arr[j] < arr[minIndex]) {
                minIndex = j;
            }
        }

        // 交换找到的最小元素与当前位置元素
        temp = arr[i];
        arr[i] = arr[minIndex];
        arr[minIndex] = temp;
    }
}

4 . 时间复杂度

O ( n 2 ) O(n²) O(n2)

5 . 总结

选择排序适合用在数据量不多的场景,这个算法不需要借助过多的栈内存来完成,对系统的消耗多数体现在时间上的消耗,若是追求稳定性,对时间复杂度要求不高,这个算法是推荐的,谢谢观看。

技术交流群 : 745662457

群内专注 - 问题答疑,技术研究

相关推荐
宇木灵4 小时前
C语言基础学习-二、运算符
c语言·开发语言·学习
想放学的刺客4 小时前
整理了120道单片机嵌入式面试题与答案,覆盖了硬件电路和C语言等核心领域。
c语言·c++·stm32·单片机·嵌入式硬件·mcu·51单片机
回不去的bug4 小时前
【STM32】玩转IIC之驱动MPU6050及姿态解算
stm32·单片机·嵌入式硬件·mpu6050
weixin_1122334 小时前
基于单片机的塑料厂房气体检测系统设计
单片机·嵌入式硬件
舟舟亢亢5 小时前
算法总结——二叉树【hot100】(上)
java·开发语言·算法
weixin_477271696 小时前
根象:树根。基石。基于马王堆帛书《周易》原文及甲骨文还原周朝生活活动现象(《函谷门》原创)
算法·图搜索算法
星辰徐哥6 小时前
C语言网络编程入门:socket编程、TCP/IP协议、客户端与服务器通信的实现
c语言·网络·tcp/ip
普通网友6 小时前
多协议网络库设计
开发语言·c++·算法
努力努力再努力wz6 小时前
【Linux网络系列】:TCP 的秩序与策略:揭秘传输层如何从不可靠的网络中构建绝对可靠的通信信道
java·linux·开发语言·数据结构·c++·python·算法
w8x9y0z16 小时前
大小端转换的隐藏陷阱:为什么你的网络数据传输总是出错?
c语言·网络编程·大小端·数据序列化