【每天一个算法】选择排序算法

一、选择排序的基本思想

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的中数据元素选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。

二、排序过程

例:定义一个数组 int a[5] = {5,3,7,2,4},要求利用选择排序的方法将数组从小到大排序。

  1. 遍历第一趟数组,从位置 0 开始,找出数组的最小值,与位置 0 的数据交换
  1. 遍历第二趟数组,从位置 1 开始,找出数组的最小值,与位置 1 的数据交换
  1. 遍历第三趟数组,从位置 2 开始,找出数组的最小值,与位置 2 的数据交换
  1. 遍历第四趟数组,从位置 3 开始,找出数组的最小值,与位置 3 的数据交换
  1. 经历上面的排序后,只剩最后一个元素,但是可以肯定的是这个元素是所有元素中最大的,那么到此这个数组就完成了排序。

三、代码实现

c++ 复制代码
void selection_sort(int arr[], int len) 
{
    for (int i = 0; i < len - 1; i++) 
    {
        int min = i;
        for (int j = i + 1; j < len; j++) 
        {
            if (arr[j] < arr[min])
            {
                min = j;
            }
        }
        std::swap(arr[i], arr[min]);
    }
}
相关推荐
计算机安禾2 小时前
【数据结构与算法】第39篇:图论(三):最小生成树——Prim算法与Kruskal算法
开发语言·数据结构·c++·算法·排序算法·图论·visual studio code
澈2073 小时前
堆排序:高效构建大顶堆实战
数据结构·算法·排序算法
像素猎人4 小时前
大学算法类竞赛的常用模板【自己总结+收录的】【c++版】
数据结构·算法·排序算法·算法竞赛常用算法
计算机安禾6 小时前
【数据结构与算法】第40篇:图论(四):最短路径——Dijkstra算法与Floyd算法
c语言·数据结构·算法·排序算法·哈希算法·图论·visual studio
计算机安禾1 天前
【数据结构与算法】第38篇:图论(二):深度优先搜索(DFS)与广度优先搜索(BFS)
数据结构·算法·矩阵·排序算法·深度优先·图论·宽度优先
山栀shanzhi1 天前
C++四大常见排序对比
c++·算法·排序算法
paeamecium1 天前
【PAT甲级真题】- Insert or Merge (25)
数据结构·c++·算法·排序算法·pat考试·pat
牧瀬クリスだ1 天前
七大排序一次满足
数据结构·算法·排序算法
计算机安禾1 天前
【数据结构与算法】第37篇:图论(一):图的存储结构(邻接矩阵与邻接表)
数据结构·算法·链表·排序算法·深度优先·图论·visual studio code
sparEE1 天前
基础排序算法:冒泡、选择、插入、希尔
数据结构·算法·排序算法