侵权投诉

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

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 结语

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

收藏 人收藏
分享:

评论

相关推荐

学习机器学习的方法及如何运用Python

随着数据科学(Data Science)技术的兴起,人工智能(ArtificialIntellige....
发表于 08-07 16:02 36次 阅读
学习机器学习的方法及如何运用Python

同济团队研发心梗人工智能预警系统

该研究旨在研究通过普通12导联心电图构建可自动判读急性ST段抬高型心肌梗死(STEMI)的人工智能算....
的头像 机器人技术与应用 发表于 08-07 10:18 166次 阅读
同济团队研发心梗人工智能预警系统

如何使用FPGA实现开方运算

 开方运算作为数字信号处理(DSP)领域内的一种基本运算,其基于现场可编程门列(FPGA)的工程实现....
发表于 08-06 17:58 17次 阅读
如何使用FPGA实现开方运算

国内机器视觉产业链全解析

软件是主要壁垒,底层算法库是核心。目前是外资企业垄断,做得好例如康耐视以及MVTec,主要是靠国外几....
的头像 工业机器人 发表于 08-06 16:58 257次 阅读
国内机器视觉产业链全解析

清华大学战略与安全研究中心的人工智能小组提出六原则

外交部原副部长、清华大学战略与安全研究中心主任傅莹在《人民论坛》撰文指出,人工智能技术的成长依靠的是....
发表于 08-06 14:41 420次 阅读
清华大学战略与安全研究中心的人工智能小组提出六原则

Python标准库中文版资料合集

Python 的标准库包括了很多的模块, 从 Python 语言自身特定的类型和声明, 到一些只用于....
发表于 08-06 08:00 18次 阅读
Python标准库中文版资料合集

增强蚁群算法MATLAB程序的资料合集免费下载

本文档的主要内容详细介绍的是增强蚁群算法MATLAB程序的资料合集免费下载。
发表于 08-06 08:00 9次 阅读
增强蚁群算法MATLAB程序的资料合集免费下载

TSP问题的蚁群算法资料合集免费下载

本文档的主要内容详细介绍的是TSP问题的蚁群算法资料合集免费下载。
发表于 08-06 08:00 11次 阅读
TSP问题的蚁群算法资料合集免费下载

谭浩强版C语言程序设计PDF电子书免费下载

C语言是在 70 年代初问世的。一九七八年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。....
发表于 08-06 08:00 22次 阅读
谭浩强版C语言程序设计PDF电子书免费下载

电子工程师成长之教训系列故事(上)终身受用的启发

勤奋真的很重要,特别是年轻人,不轻言放弃,遇事有钻研精神是技术上能有所成就的基本要求。只有亲身经历过....
的头像 电子发烧友网 发表于 08-05 14:52 157次 阅读
电子工程师成长之教训系列故事(上)终身受用的启发

C语言/C++基本语句编程风格

千万留意,无论是float还是double类型的变量,都有精度限制,所以一定要避免将浮点变量用“==....
的头像 玩转单片机 发表于 08-05 11:03 72次 阅读
C语言/C++基本语句编程风格

C语言开发单片机为啥都是全局变量形式?

要成为一个资深的嵌入式工程师相当难,一方面要有非常扎实的理论知识,同时也要有相当的那种大型的、高频C....
的头像 玩转单片机 发表于 08-05 10:35 138次 阅读
C语言开发单片机为啥都是全局变量形式?

单片机初学者都会遇到的10个问题

汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少....
的头像 玩转单片机 发表于 08-05 10:28 81次 阅读
单片机初学者都会遇到的10个问题

C语言指针详解

函数指针,形如: #define PMYFUN (void*)(int,int) ,可以用在大量分支....
的头像 玩转单片机 发表于 08-05 10:17 58次 阅读
C语言指针详解

有没有想过为什么嵌入式开发要使用C语言呢?

新型的单片机,寄存器成百上千,全靠记忆简直天方夜谭,复杂的大型项目不是一个人能完成的,汇编的移植性和....
的头像 玩转单片机 发表于 08-05 10:14 98次 阅读
有没有想过为什么嵌入式开发要使用C语言呢?

采用标准C的强制转换和指针的概念来实现访问MCU的寄存器

总结一下,就是(*(volatile unsigned char *)0x25)可以看作是一个普通变....
的头像 玩转单片机 发表于 08-04 16:44 147次 阅读
采用标准C的强制转换和指针的概念来实现访问MCU的寄存器

一种适用于软件无线电的数字调制与解调算法的详细说明

在软件无线电系统中,采用不同的软件算法来实现不同调制与解调是其核心思想。文章提出了一种适用于软件无线....
发表于 08-04 16:30 22次 阅读
一种适用于软件无线电的数字调制与解调算法的详细说明

解析Java通信:Sentinel中的冷启动限流算法实现

令牌桶算法的原理是:按一定的速率往令牌桶中放入令牌,当接收到请求时,从令牌桶申请令牌,只有拿到令牌的....
发表于 08-04 09:59 45次 阅读
解析Java通信:Sentinel中的冷启动限流算法实现

如何实现温室内移动机器人自主行走的温室道路边缘检测与导航算法

针对温室内移动机器人的应用需求,该文提出了一种应用于温室内移动机器人自主行走的温室道路边缘检测与导航....
发表于 08-03 17:58 74次 阅读
如何实现温室内移动机器人自主行走的温室道路边缘检测与导航算法

最酷的6个学习编程/算法的网站

TopCoder是最早的程序设计比赛网站之一,其中就有算法挑战赛,你可以使用其代码编辑器在线进行操作....
的头像 算法与数据结构 发表于 08-03 17:04 150次 阅读
最酷的6个学习编程/算法的网站

带你梳理一下操作系统中都出现过哪些算法

进程和线程在调度时候出现过很多算法,这些算法的设计背景是当一个计算机是多道程序设计系统时,会频繁的有....
的头像 算法与数据结构 发表于 08-03 16:55 147次 阅读
带你梳理一下操作系统中都出现过哪些算法

益智游戏克星:BFS暴力搜索算法

给你一个 2x3 的滑动拼图,用一个 2x3 的数组board表示。拼图中有数字 0~5 六个数,其....
的头像 算法与数据结构 发表于 08-03 16:53 158次 阅读
益智游戏克星:BFS暴力搜索算法

AI新算法可用出租车监测城市空气污染

研究团队在城市实验和模拟实验中证明,使用系统后,集群的传感覆盖质量较基准提高了40%,业务匹配率提高....
的头像 MEMS 发表于 08-02 09:10 125次 阅读
AI新算法可用出租车监测城市空气污染

了解机器学习的十大算法

在机器学习领域,有种说法叫做“世上没有免费的午餐”,简而言之,它是指没有任何一种算法能在每个问题上都....
发表于 07-31 16:06 88次 阅读
了解机器学习的十大算法

理解机器学习中的算法与模型

对于初学者来说,这很容易让人混淆,因为“机器学习算法”经常与“机器学习模型”交替使用。这两个到底是一....
发表于 07-31 15:38 48次 阅读
理解机器学习中的算法与模型

使用索引技术实现的子图查询技术研究进展

图作为表示实体间的数据结构,在社区发现,生物化学分析,社会安全分析等数据关联性要求较高的领域有着广泛....
发表于 07-31 11:59 66次 阅读
使用索引技术实现的子图查询技术研究进展

超声波测距LCD12864显示的C语言程序和工程文件免费下载

本文档的主要内容详细介绍的是超声波测距LCD12864显示的C语言程序和工程文件免费下载。
发表于 07-30 17:16 33次 阅读
超声波测距LCD12864显示的C语言程序和工程文件免费下载

超声波测距LC1602显示的C语言程序和工程文件

  本文档的主要内容详细介绍的是超声波测距LC1602显示的C语言程序和工程文件。
发表于 07-30 17:16 27次 阅读
超声波测距LC1602显示的C语言程序和工程文件

解析深度学习中数据的重要性

在计算的早期,有一个缩写词:GIGO。它代表“进”,“出”。大型机器行业的少数人明白,如果进入系统的....
发表于 07-30 15:02 858次 阅读
解析深度学习中数据的重要性

口罩正在打破面部识别算法?

报告作者兼NIST计算机科学家Mei Ngan说:“随着大流行的到来,我们需要了解人脸识别技术如何处....
的头像 倩倩 发表于 07-29 16:56 155次 阅读
口罩正在打破面部识别算法?

fpga在通信方面的应用_怎么用FPGA做算法

现场可编程门陈列(FPGA)芯片在许多领域均有广泛的应用,特别是在无线通信领域里,由于具有极强的实时....
发表于 07-29 16:55 163次 阅读
fpga在通信方面的应用_怎么用FPGA做算法

基于PPO强化学习算法的AI应用案例

Viet Nguyen就是其中一个。这位来自德国的程序员表示自己只玩到了第9个关卡。因此,他决定利用....
发表于 07-29 09:30 125次 阅读
基于PPO强化学习算法的AI应用案例

C语言的拓展归纳总结详细说明

本文档的主要内容详细介绍的是C语言的拓展归纳总结详细说明。
发表于 07-29 08:00 46次 阅读
C语言的拓展归纳总结详细说明

C语言教程之struct结构体的详细资料说明

将多个数据类型组合成一个实体,定义了了结构体,就定义了一个新的数据类型。用简单的类型封装成复杂的类型....
发表于 07-29 08:00 31次 阅读
C语言教程之struct结构体的详细资料说明

C语言动态链表的详细资料说明

  动态链表:在程序执行的过程中,动态地开辟一块内存空间,可以是不在一起的内存空间,通过链表联系起来....
发表于 07-29 08:00 28次 阅读
C语言动态链表的详细资料说明

C语言空间开辟的教程资料说明

本文档的主要内容详细介绍的是C语言空间开辟的教程资料说明1.系统自动分配内存空间的变量 不使用关键....
发表于 07-29 08:00 37次 阅读
C语言空间开辟的教程资料说明

C语言的声明和定义与引用说明

本文档的主要内容详细介绍的是C语言的声明和定义与引用说明
发表于 07-29 08:00 34次 阅读
C语言的声明和定义与引用说明

C语言的扩展资料说明

编译器不能定义编程中所有的东西,可以提供规则让程序员定义自己的东西
发表于 07-29 08:00 28次 阅读
C语言的扩展资料说明

C语言数组的学习教程说明

同样我们在程序中也需要容器,只不过该容器有点特殊,它在程序中是一块连续的,大小固定并且里面的数据类型....
发表于 07-29 08:00 20次 阅读
C语言数组的学习教程说明

精密检测设备助力中国智造 中科慧远上海DIC EXPO显示展完美收官

近日,DIC 2020上海国际显示技术及应用创新展,在上海国家会展中心隆重举办。全球领先的尖端机器视....
的头像 电子观察说 发表于 07-28 17:01 221次 阅读
精密检测设备助力中国智造 中科慧远上海DIC EXPO显示展完美收官

解析人工智能诞生以来的训练方式

人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、....
发表于 07-28 08:52 269次 阅读
解析人工智能诞生以来的训练方式

了解一些C程序的基本规则

程序由一个或多个函数组成,其中一定有一个名为 main()的函数。函数的描述由函数头和函数体组成。函....
的头像 lhl545545 发表于 07-27 11:01 237次 阅读
了解一些C程序的基本规则

如何实现电子密码锁的设计

根据设定好的密码,采用二个按键实现密码的输入功能,当密码输入正确之后,锁就打开,如果输入的三次的密码....
的头像 Wildesbeast 发表于 07-26 10:35 408次 阅读
如何实现电子密码锁的设计

设计一个多路多功能的智力竞赛抢答器资料说明

我们为适应高校等多代表队单位活动的需要一个多路抢答器设计 ,讲述了电路各部分的设计及功能 ,并说明了....
的头像 Wildesbeast 发表于 07-26 10:34 370次 阅读
设计一个多路多功能的智力竞赛抢答器资料说明

请问自学汇编语言汇编语言需要什么?

    学过C语言和Java 学过51单片机, 现在想学习ARM 汇编语言 嵌入式系统Linux 这几个 有什么相关的视频或...
发表于 07-26 08:03 0次 阅读
请问自学汇编语言汇编语言需要什么?

自学C语言的好方法有哪些?

    计算机小白一枚,自学C语言中。但目前还很不熟练。碰到书上稍微比较难的例子,不看答案自己去思考的话,脑子就一...
发表于 07-26 08:03 0次 阅读
自学C语言的好方法有哪些?

DSP的设计与实现详细说明

本课程主要结合TMS320C54X、TMS320LF240X两个系列DSP介绍DSP的相关结构原理、....
发表于 07-24 17:31 53次 阅读
DSP的设计与实现详细说明

TDOA和DR组合系统定位算法的仿真研究

GPS/DR组合导航在户外 GPS信号较好的情况下,可以提供精度较高的定位导航,但人的活动范围不仅仅....
发表于 07-24 08:00 27次 阅读
TDOA和DR组合系统定位算法的仿真研究

如何使用CR-PageRank算法实现个人事件自动摘要的研究说明

文本自动摘要是获取微博重要信息的一种手段,但微博的短文本、高冗余、高噪声等特征对于自动摘要造成较大的....
发表于 07-23 16:15 33次 阅读
如何使用CR-PageRank算法实现个人事件自动摘要的研究说明

电力电子应用技术的MATLAB仿真破PDF电子书免费下载

本书概述了MATLAB软件及其图形仿真界面Simulink的基础应用知识,详细介绍了用于电力电子仿真....
发表于 07-23 08:00 80次 阅读
电力电子应用技术的MATLAB仿真破PDF电子书免费下载

整个娱乐行业的AI每年的总支出约为3.29亿美元

举一个比较著名的例子,Netflix先进的Meson算法能够分析用户行为和情绪,为数百万个帐户持有人....
的头像 倩倩 发表于 07-22 16:22 509次 阅读
整个娱乐行业的AI每年的总支出约为3.29亿美元

医学中心的研究人员开发了一种新的AI算法

已经开发了机器学习系统,以帮助发现各种癌症,检测眼部病变并设计生物分子。然而,医生对此的主要批评是它....
的头像 倩倩 发表于 07-22 16:21 183次 阅读
医学中心的研究人员开发了一种新的AI算法

C语言是如何控制硬件的?

    提到C语言就会想到单片机编程,像java python 这些就是纯软件编程语言,不会和硬件打交道。为什么C可以和硬件打...
发表于 07-18 08:06 1次 阅读
C语言是如何控制硬件的?

C语言版cla的程序中可以使用局部变量吗?

interrupt void Cla1Task1(void) [    int i;    for (i=0; i...
发表于 07-17 14:53 0次 阅读
C语言版cla的程序中可以使用局部变量吗?

PyInstaller打包xgboost算法包等可能出现问题是什么

PyInstaller 打包 xgboost算法包等可能出现问题
发表于 07-16 14:35 1次 阅读
PyInstaller打包xgboost算法包等可能出现问题是什么

如何给C语言增加几个位操作函数

在汇编语言中有直接对位进行操作的指令,如置位、复位、位取反、测试某一位等,这对于硬件操作十分方便,在C语言中尽管也提供了...
发表于 07-14 18:15 136次 阅读
如何给C语言增加几个位操作函数

C语言的几种位操作运算

在汇编语言中有直接对位进行操作的指令,如置位、复位、位取反、测试某一位等,这对于硬件操作十分方便,在C语言中尽管也提供了...
发表于 07-14 18:14 127次 阅读
C语言的几种位操作运算

哪位大神写过2.4g的跳频算法,有没有什么方案

哪位大神写过2.4g的跳频算法,有没有什么方案呀...
发表于 07-14 07:07 5次 阅读
哪位大神写过2.4g的跳频算法,有没有什么方案

分享 郭天祥 十天学会C语言和51单片机视频教程+代码

郭天祥 郭天祥 十天学会C语言和51单片机 详细教程源码 回复可得 链接:https://pan.baidu.com/s/1uWWpG-o_EVscRZ3ys...
发表于 07-12 21:31 298次 阅读
分享 郭天祥 十天学会C语言和51单片机视频教程+代码

如何把C++的源程序改写成C语言

由于C++解释器比C语言解释器占用的存储空间要大500k左右。为了节省有限的存储空间,降低成本,同时也为了提高效率,将用C+...
发表于 07-11 09:34 1912次 阅读
如何把C++的源程序改写成C语言