当前位置: 首页 > news >正文

排序与算法:选择排序

执行效果
选择排序的执行效果是这样的:

 

呃……看不懂吗?没关系,接着往下看介绍 


算法介绍
选择排序(Selection sort)是一种简单直观的排序算法。选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对 n 个元素的表进行排序总共进行至多 n-1 次交换。在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。

算法档案

时间复杂度:O(n2)
最优时间复杂度:O(n2)
平均时间复杂度:O(n2)
空间复杂度:总共 O(n),需要辅助空间 O(1)
稳定性:不稳定

算法步骤

  • 在序列中找到最小(大)元素
  • 把它存放到排序序列的起始位置
  • 重复 1 和 2 两个步骤,直到所有元素均排序完毕

算法实现

#include <stdio.h>

void selection_sort(int array[], int length);

void selection_sort(int array[], int length)
{
        int i, j, min, temp;

        for (i = 0; i < length - 1; i++)
        {
                min = i;
                for (j = i + 1; j < length; j++)
                {
                        if (array[zxsq-anti-bbcode-min] > array[zxsq-anti-bbcode-j])
                        {
                                min = j;
                        }
                }
                temp = array[zxsq-anti-bbcode-min];

                array[zxsq-anti-bbcode-min] = array[zxsq-anti-bbcode-i];

                array[zxsq-anti-bbcode-i] = temp;
        }
}


int main(void)
{
        int array[] = {73, 108, 111, 118, 101, 70, 105, 115, 104, 67, 46, 99, 111, 109};
        int i, length;

        length = sizeof(array) / sizeof(array[zxsq-anti-bbcode-0]);
        selection_sort(array, length);
        printf("排序后的结果是:");

        for (i = 0; i < length; i++)
        {
                printf("%d ", array[zxsq-anti-bbcode-i]);
        }

        putchar('\n');
        return 0;
}

程序实现如下:

相关文章:

  • MySQL的基本使用
  • 了解SQL Server不同版本(如Express、Standard、Enterprise)的功能差异和适用场景。
  • LLM论文笔记 12: Teaching Arithmetic to Small Transformers
  • Linux-C/C++《C/7、字符串处理》(字符串输入/输出、C 库中提供的字符串处理函数、正则表达式等)
  • WordPress Ai插件:支持提示词生成文章和chat智能对话
  • 深入解析 Flutter Bloc:从原理到实战
  • python1
  • 零基础入门机器学习 -- 第九章机器学习项目实战
  • 数据结构_前言
  • 【基础架构篇二】《DeepSeek容器化部署:Docker+Kubernetes集群实战》
  • 【DL】浅谈深度学习中的知识蒸馏 | 输出层知识蒸馏
  • Spring中Bean的生命周期
  • React中如何处理高阶组件中的错误
  • WebGPU 命令编码机制解析:GPUCommandEncoder 与 GPURenderPassEncoder 的协作
  • 开源模型应用落地-DeepSeek-R1-Distill-Qwen-7B-LoRA微调-LLaMA-Factory-单机单卡-V100(一)
  • 调用deepseek接口
  • DeepSeek接入大数据能做什么
  • c# —— StringBuilder 类
  • three.js+WebGL踩坑经验合集(8.2):z-fighting叠面问题和camera.near的坑爹关系
  • C语言:在主函数中输入十个等长的字符串。用另一函数对它们排序,然后在主函数输出这10个已排好序的字符串。
  • 从良渚到三星堆:一江水串起了5000年的文明对话
  • 圆桌丨全球化博弈与人工智能背景下,企业如何落地合规体系
  • 湖南慈利一村干部用AI生成通知并擅自发布,乡纪委立案
  • 中国社联成立95周年,《中国社联期刊汇编》等研究丛书出版
  • 女子七年后才知银行卡被盗刷18万元,警方抓获其前男友
  • 中国进出口银行:1-4月投放制造业中长期贷款超1800亿元