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

排序与算法:选择排序

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

 

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


算法介绍
选择排序(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;
}

程序实现如下:


http://www.kler.cn/a/552156.html

相关文章:

  • C++入门小清单
  • 【Spring】Spring配置文件
  • 利用Java爬虫精准获取淘宝商品描述:实战案例指南
  • .NET 9.0 的 Blazor Web App 项目,Bootstrap Blazor 全局异常 <ErrorLogger> 使用备忘
  • 【C语言】C语言 食堂自动化管理系统(源码+数据文件)【独一无二】
  • ubuntu22.04离线安装nginx
  • 【转】“小前台,大中台”战略—以阿里云中台设计为例
  • 【Spring详解二】容器的基本实现
  • 国产网络变压器有哪些品牌比较好
  • Upload-labs
  • 从 0 到 1:Spring Boot 构建高效应用指南
  • java断点调试(debug)
  • 数据结构--双向链表,双向循环链表
  • Redis7——基础篇(四)
  • 深度学习06 寻找与保存最优模型
  • Flink SQL与Doris实时数仓Join实战教程(理论+实例保姆级教程)
  • WPS/WORD$OffterAI
  • Vue3项目,蛋糕商城系统
  • C++ Primer 访问控制与封装
  • Android Studio:如何使用 RxBus 类进行事件发布和订阅