- 算法设计与分析
- 家
- 算法基础知识
- DAA - 简介
- DAA - 算法分析
- DAA-分析方法
- 渐近符号和先验分析
- 时间复杂度
- 马斯特定理
- DAA - 空间复杂性
- 分而治之
- DAA-分而治之
- DAA - 最大最小问题
- DAA-归并排序
- DAA-二分查找
- 施特拉森矩阵乘法
- 唐叶算法
- 河内塔
- 贪心算法
- DAA-贪婪法
- 旅行商问题
- Prim 的最小生成树
- 克鲁斯卡尔的最小生成树
- Dijkstra 的最短路径算法
- 地图着色算法
- DAA-分数背包
- DAA - 带截止日期的作业排序
- DAA - 最佳合并模式
- 动态规划
- DAA-动态规划
- 矩阵链乘法
- 弗洛伊德·沃歇尔算法
- DAA - 0-1 背包
- 最长公共子序列
- 旅行商问题| 动态规划
- 随机算法
- 随机算法
- 随机快速排序
- 卡格的最低削减
- 费舍尔-耶茨洗牌
- 近似算法
- 近似算法
- 顶点覆盖问题
- 设置封面问题
- 旅行推销员近似算法
- 排序技巧
- DAA-快速排序
- DAA-冒泡排序
- DAA——插入排序
- DAA-选择排序
- DAA——希尔排序
- DAA-堆排序
- DAA——桶排序
- DAA——计数排序
- DAA - 基数排序
- 搜索技巧
- 搜索技术介绍
- DAA - 线性搜索
- DAA-二分查找
- DAA - 插值搜索
- DAA - 跳转搜索
- DAA - 指数搜索
- DAA - 斐波那契搜索
- DAA - 子列表搜索
- DAA-哈希表
- 图论
- DAA-最短路径
- DAA - 多级图
- 最优成本二叉搜索树
- 堆算法
- DAA-二叉堆
- DAA-插入法
- DAA-Heapify 方法
- DAA-提取方法
- 复杂性理论
- 确定性计算与非确定性计算
- DAA-最大派系
- DAA - 顶点覆盖
- DAA - P 级和 NP 级
- DAA-库克定理
- NP 硬课程和 NP 完全课程
- DAA - 爬山算法
- DAA 有用资源
- DAA - 快速指南
- DAA - 有用的资源
- DAA - 讨论
设计与分析 - 选择排序
选择排序是一种简单的排序算法。这种排序算法与插入排序一样,是一种基于就地比较的算法,其中列表被分为两部分,左端的已排序部分和右端的未排序部分。最初,已排序的部分是空的,未排序的部分是整个列表。
从未排序的数组中选择最小的元素并与最左边的元素交换,该元素成为排序数组的一部分。这一过程继续将未排序的数组边界向右移动一个元素。
该算法不适合大型数据集,因为其平均和最坏情况复杂度为O(n 2 ),其中n是项目数。
选择排序算法
这种类型的排序称为选择排序,因为它通过重复对元素进行排序来工作。即:我们先找到数组中最小的值与第一个位置的元素交换,然后找到次小的元素与第二个位置的元素交换,如此下去,直到整个数组已排序。
步骤 1 - 将 MIN 设置为位置 0
步骤 2 - 搜索列表中的最小元素
步骤 3 - 与位置 MIN 处的值进行交换
步骤 4 - 增加 MIN 以指向下一个元素
步骤 5 - 重复直到列表排序
伪代码
Algorithm: Selection-Sort (A) fori← 1 to n-1 do min j ←i; min x ← A[i] for j ←i + 1 to n do if A[j] < min x then min j ← j min x ← A[j] A[min j] ← A [i] A[i] ← min x
分析
选择排序是最简单的排序技术之一,对于小文件非常有效。它有一个非常重要的应用,因为每个项目实际上最多被移动一次。
节排序是一种用于对具有非常大的对象(记录)和小键的文件进行排序的方法。如果数组已经按降序排序,而我们想按升序排序,则会出现最坏的情况。
尽管如此,选择排序算法所需的时间对要排序的数组的原始顺序不是很敏感:测试 if