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

    文章

    4452

    浏览量

    90746
  • C语言
    +关注

    关注

    180

    文章

    7528

    浏览量

    128326
  • 排序算法
    +关注

    关注

    0

    文章

    50

    浏览量

    10019
收藏 人收藏

    评论

    相关推荐

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

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

    十大排序算法总结

    排序算法是最经典的算法知识。因为其实现代码短,应该广,在面试中经常会问到排序算法及其相关的问题。一般在面试中最常考的是快速
    的头像 发表于 12-20 10:39 716次阅读

    嵌入式课程设计报告-数据排序过程演示

    电子发烧友网站提供《嵌入式课程设计报告-数据排序过程演示.doc》资料免费下载
    发表于 10-26 09:30 0次下载
    嵌入式课程设计报告-数据<b class='flag-5'>排序</b><b class='flag-5'>过程</b>演示

    排序算法有哪些

    合并 我们来具体看看例子,假设我们现在给定一个数组:[6,3,2,7,1,3,5,4],我们需要使用归并算法对其排序,其大致过程如下图所示: 分 阶段可以理解为就是 递归拆分子序列 的过程
    的头像 发表于 10-11 15:49 323次阅读
    <b class='flag-5'>排序</b><b class='flag-5'>算法</b>有哪些

    排序算法选择排序

    选择排序: (Selection sort)是一种简单直观的排序算法,也是一种不稳定的排序方法。 选择
    的头像 发表于 09-25 16:30 837次阅读
    <b class='flag-5'>排序</b><b class='flag-5'>算法</b>之<b class='flag-5'>选择</b><b class='flag-5'>排序</b>

    EMC难不难做?带你读懂EMC 详谈EMC

    读懂EMC:详谈EMC
    的头像 发表于 07-31 11:23 1690次阅读
    EMC难不难做?带你读懂EMC <b class='flag-5'>详谈</b>EMC

    使用C++ sort函数对vector进行自定义排序

    今天在学一些C++ STL容器,看到sort函数允许自定义排序规则,小小地实操了一下。
    的头像 发表于 07-22 10:12 1046次阅读

    FPGA排序-冒泡排序介绍

    排序算法是图像处理中经常使用一种算法,常见的排序算法有插入排序、希尔
    发表于 07-17 10:12 667次阅读
    FPGA<b class='flag-5'>排序</b>-冒泡<b class='flag-5'>排序</b>介绍

    Python实现的常见内部排序算法

    排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部
    发表于 07-06 12:35 256次阅读
    Python实现的常见内部<b class='flag-5'>排序</b><b class='flag-5'>算法</b>

    常见排序算法分类

    本文将通过动态演示+代码的形式系统地总结十大经典排序算法排序算法 算法分类 —— 十种常见排序
    的头像 发表于 06-22 14:49 625次阅读
    常见<b class='flag-5'>排序</b><b class='flag-5'>算法</b>分类

    详解DeepMind排序算法

    DeepMind 的这一发现确实居功至伟,但不幸的是,他们未能解释清楚算法。下面,我们来详细看看他们发布的一段汇编代码,这是一个包含三个元素的数组的排序,我们将伪汇编转换为汇编:
    的头像 发表于 06-21 15:38 258次阅读

    利用强化学习来探索更优排序算法的AI系统

    前言 DeepMind 最近在 Nature 发表了一篇论文 AlphaDev[2, 3],一个利用强化学习来探索更优排序算法的AI系统。 AlphaDev 系统直接从 CPU 汇编指令的层面入手
    的头像 发表于 06-19 10:49 390次阅读
    利用强化学习来探索更优<b class='flag-5'>排序</b><b class='flag-5'>算法</b>的AI系统

    详细介绍8种最常用的排序算法

    在计算机科学领域中,排序算法是一种基本的算法排序算法可以将一个数据集合重新排列成一个按照某种规则有序的集合,常用于数据检索、数据压缩、数据
    的头像 发表于 06-06 14:52 2214次阅读

    C语言经典排序算法总结

    本文将通过动态演示+代码的形式系统地总结十大经典排序算法
    发表于 06-05 10:56 388次阅读
    C语言经典<b class='flag-5'>排序</b><b class='flag-5'>算法</b>总结

    排序算法之“归并算法”介绍

    在说这个题目之前先来说说一个排序算法 “归并算法” 归并算法采取思想是分治思想,分治思想简单说就是分而治之,将一个大问题分解为小问题,将小问题解答后合并为大问题的答案。乍一看跟递归思想
    的头像 发表于 05-22 10:03 427次阅读
    <b class='flag-5'>排序</b><b class='flag-5'>算法</b>之“归并<b class='flag-5'>算法</b>”介绍