0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

详谈选择排序算法的定义和过程

如意 来源:百家号 作者:地中海程序员 2020-06-30 17:06 次阅读

1 选择排序法的定义

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

2 选择排序法详细过程解析

假定有这样一个数组

int[] nums = new int[]{6, 4, 5, 1, 3, 2};

现在需要将他从大到小排列。

选择排序法代码如下:

详谈选择排序算法的定义和过程

排序详细过程:

[6, 4, 5, 1, 3, 2] 第一次遍历6和2交换位置

[6, 5, 4, 1, 3, 2] 第二次遍历5和4交换位置

[6, 5, 4, 1, 3, 2] 第三次遍历4位置不变

[6, 5, 4, 3, 1, 2] 第四次遍历3和1交换位置

[6, 5, 4, 3, 2, 1] 第五次遍历2和1交换位置

3 选择排序法时间复杂度

数据比较次数:

C = (N-1)+(N-2)+……+2+1=(((N-1)+1)*(N-1)) / 2=(N^2)/2-N/2

数据交换次数:

M = N-1

时间复杂度:

C+M=(N^2)/2-N/2+ N-1=O(N^2)

因此,选择排序的时间复杂度为O(N^2)

4 结语

感谢各位的阅读,如有问题,欢迎大家留言反馈,我会在第一时间修正。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4607

    浏览量

    92833
  • C语言
    +关注

    关注

    180

    文章

    7604

    浏览量

    136686
  • 排序算法
    +关注

    关注

    0

    文章

    52

    浏览量

    10056
收藏 人收藏

    评论

    相关推荐

    加密算法选择对于加密安全有多重要?

    加密算法选择对于加密安全至关重要,因为它直接影响到数据保护的有效性和可靠性。以下是几个关键点来说明加密算法选择的重要性: 加密强度: 加密算法
    的头像 发表于 12-17 15:59 67次阅读

    智能选择ADC/DAC可实现更好的软件定义无线电设计

    电子发烧友网站提供《智能选择ADC/DAC可实现更好的软件定义无线电设计.pdf》资料免费下载
    发表于 10-21 09:59 0次下载
    智能<b class='flag-5'>选择</b>ADC/DAC可实现更好的软件<b class='flag-5'>定义</b>无线电设计

    时间复杂度为 O(n^2) 的排序算法

    , O(n2) 的排序算法可能会比 O(nlogn) 的排序算法执行效率高。不过随着数据规模增大, O(nlogn) 的排序
    的头像 发表于 10-19 16:31 1138次阅读
    时间复杂度为 O(n^2) 的<b class='flag-5'>排序</b><b class='flag-5'>算法</b>

    TPS54120排序和跟踪

    电子发烧友网站提供《TPS54120排序和跟踪.pdf》资料免费下载
    发表于 10-10 10:54 0次下载
    TPS54120<b class='flag-5'>排序</b>和跟踪

    使用qboot时选择了压缩率更高的zip算法,但是发现编译报错,为什么?

    在使用qboot时选择了压缩率更高的zip算法,但是发现编译报错,如下图:
    发表于 09-26 07:22

    bp神经网络算法过程包括

    算法过程,包括网络结构、激活函数、训练过程、反向传播算法、权重更新策略等。 网络结构 BP神经网络由输入层、隐藏层和输出层组成,每层包含若干神经元。输入层的神经元数量与问题的特征维度
    的头像 发表于 07-04 09:45 442次阅读

    神经网络反向传播算法的推导过程

    反向传播算法的推导过程,包括前向传播、损失函数、梯度计算和权重更新等步骤。 前向传播 前向传播是神经网络中信息从输入层到输出层的传递过程。在多层前馈神经网络中,每个神经元都与前一层的所有神经元相连,并通过激活函数进行非线性变换。
    的头像 发表于 07-03 11:13 547次阅读

    深度学习模型训练过程详解

    详细介绍深度学习模型训练的全过程,包括数据预处理、模型构建、损失函数定义、优化算法选择、训练过程以及模型的评估与调优。
    的头像 发表于 07-01 16:13 1229次阅读

    手把手教你排序算法怎么写

    今天以直接插入排序算法,给大家分享一下排序算法的实现思路,主要包含以下部分内容:插入排序介绍插入排序
    的头像 发表于 06-04 08:03 681次阅读
    手把手教你<b class='flag-5'>排序</b><b class='flag-5'>算法</b>怎么写

    用FPGA实现双调排序的方法(2)

    典型的排序算法包括冒泡排序选择排序、插入排序、归并排序
    的头像 发表于 03-21 10:28 633次阅读
    用FPGA实现双调<b class='flag-5'>排序</b>的方法(2)

    FPGA实现双调排序算法的探索与实践

    双调排序(BitonicSort)是数据独立(Data-independent)的排序算法,即比较顺序与数据无关,特别适合并行执行。在了解双调排序
    发表于 03-14 09:50 640次阅读
    FPGA实现双调<b class='flag-5'>排序</b><b class='flag-5'>算法</b>的探索与实践

    想听听48和大对数光缆的排序

    48芯光缆和大对数光缆都是光缆中的一种,它们的区别在于芯数不同。48芯光缆指的是光缆中包含48根光纤,而大对数光缆则是指光缆中芯数超过了48芯。 在实际的光缆应用中,不同芯数的光缆需要进行不同的排序
    的头像 发表于 03-12 10:44 610次阅读

    C语言实现经典排序算法概览

    冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。
    的头像 发表于 02-25 12:27 444次阅读
    C语言实现经典<b class='flag-5'>排序</b><b class='flag-5'>算法</b>概览

    LoRaWAN网络服务器算法--下行路径选择算法对比与仿真(下)

    LoRaWAN网络是典型的星型架构网络,但单节点的广播数据也可以同时被多个网关收到并同时上报NS服务器,对于此消息有下行需求时,需要通过NS服务器的下行网关选择算法选择合适网关进行下行。一个健全
    的头像 发表于 02-19 12:22 424次阅读
    LoRaWAN网络服务器<b class='flag-5'>算法</b>--下行路径<b class='flag-5'>选择</b><b class='flag-5'>算法</b>对比与仿真(下)

    LoRaWAN网络服务器算法--下行路径选择算法对比与仿真(上)

    LoRaWAN网络是典型的星型架构网络,但单节点的广播数据也可以同时被多个网关收到并同时上报NS服务器,对于此消息有下行需求时,需要通过NS服务器的下行网关选择算法选择合适网关进行下行。一个健全
    的头像 发表于 01-12 08:13 997次阅读
    LoRaWAN网络服务器<b class='flag-5'>算法</b>--下行路径<b class='flag-5'>选择</b><b class='flag-5'>算法</b>对比与仿真(上)