选择排序算法流程图_常用排序算法之选择排序

前两天给大家分享了冒泡排序和插入排序(没关注的同学,可以关注后查看历史消息),今天继续给大家分享另一种常用的排序算法--选择排序

选择排序

选择排序和插入排序很相似,也区分已排序区间和未排序区间,选择排序是每次从未排序区间找到最小的元素放到已排序区间的末尾。

如下图:

23171245a61fda880e7b1e819348f8c6.png

代码示例

go示例:

func SelectionSort(nums []int, n int) {    if n <= 1 {        return    }    for i := 0; i < n; i++ {        min := i        for j := i + 1; j < n; j++ {            if nums[j] < nums[min] {                min = j            }        }        if min != i {            nums[i], nums[min] = nums[min], nums[i]        }    }}

PHP示例:

function SelectionSort($nums) {      if(count($nums) <= 1 ){            return $nums;      }      for ($i = 0; $i < count($nums);$i++) {            $min = $i;            for ($j = $i + 1; $j < count($nums); $j++) {                  if ($nums[$min] > $nums[$j]) {                        $min = $j;                  }            }            if ($min != $i) {                  $temp = $nums[$i];                  $nums[$i] = $nums[$min];                  $nums[$min] = $temp;            }      }      return $nums;}

JS示例:

const selectionSort = (arr) => {      if (arr.length <= 1) return      for (let i = 0; i < arr.length - 1; i++) {            let minIndex = i            for (let j = i + 1; j < arr.length; j++) {                  if (arr[j] < arr[minIndex]) {                        minIndex = j                  }            }            const temp = arr[i]            arr[i] = arr[minIndex]            arr[minIndex] = temp      }      console.log(arr)}

性能分析

最后我们看下插入排序的性能和稳定性:

  1. 时间复杂度:嵌套了两个循环,O(n2)
  2. 空间复杂度:不需要额外的存储空间,是原地排序算法
  3. 算法稳定性:每次都要找未排序区间的最小值并和前面的元素交换位置,涉及到位置交换,是不稳定的排序算法

介绍完了三种排序算法,时间复杂度都是O(n2),也都是原地排序,选择排序是不稳定的排序算法。插入排序和冒泡排序相比,插入排序需要一条语句,冒泡排序需要三个赋值语句,所以插入排序要优于冒泡排序。

但是在数据量大的时候这三个排序算法都不是很理想,接下来我会再分享两种时间复杂度为O(nlogn)的排序算法。

最后,关注下呗~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/500904.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pygame小游戏代码_Py之pygame:有趣好玩——利用pygame库实现一个移动底座弹球的小游戏...

Py之pygame&#xff1a;有趣好玩——利用pygame库实现一个移动底座弹球的小游戏目录输出结果实现代码输出结果​实现代码# -*- coding: utf-8 -*-#Py之pygame&#xff1a;有趣好玩——利用pygame库实现一个移动底座弹球的小游戏import pygame as pg from pygame.locals import …

java 小题目_java一个小题目

1.给定一个字符串String s"abcdefg";将字符串倒序成一个新字符串2.判断一个字符串是不是回文字符串 比如&#xff1a;"abcdcba" "上海自来水来自海上"1.解Java代码package com.newer.cjl.api;public class zuoye1 {public static void main(Stri…

python中字典的输出序列_python3:序列_字典(常用基础知识)

#字典&#xff1a;字典&#xff1a;无序的、可变的序列&#xff0c;也称关联数组&#xff0c;或散列表①格式{键:值}②通过键读取元素③字典是任意对象的无序集合④字典可任意嵌套&#xff0c;如元素可以为列表、字典、列表的列表等⑤字典的键必须是唯一的。不可重复&#xff0…

jenkins 集成java搅拌_如何将Gauge与Jenkins集成

我对Gauge测试工具有点熟悉&#xff0c;现在我正在通过Jenkins执行它 .首先&#xff1a;我在"Execute Windows Batch Command"字段中设置 gauge --version . 这是输出&#xff1a;Started by user anonymousBuilding in workspace C:\jenkins\workspace\Run_Gauge_Te…

大学生python实验心得体会_大学生实训心得体会3篇

转眼间为期两个星期的实训就结束了&#xff0c;但是安利公司的物流配送、黄埔港、益邦物流公司、南沙港以及学校里面的航海模拟实验中心、轮机实训实验楼这些实训过程仍历历在目。以下是小编整理的大学生实训心得体会&#xff0c;欢迎阅读。大学生实训心得体会1通过实训中心老师…

大白菜pe解锁bitlocker_微PE工具箱 v2.1 官方版,最好用的 Win10PE 系统

微PE工具箱 v2.1 – 最好用的WinPE装机维护工具&#xff01;WinPE工具箱&#xff0c;装机维护最得力的助手&#xff0c;最后救命稻草。化繁为简&#xff0c;小材大用&#xff0c;一键安装&#xff0c;极速启动。微PE工具箱&#xff0c;最好用的PE工具箱&#xff0c;没有之一。无…

mysql5.6 pt-query-digest_pt-query-digest安装及分析

slow log 设置&#xff1a;cat my.cnf# For advice on how to change settings please see# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html[mysqld]#skip-grant-tables# Remove leading # and set to the amount of RAM for the most important …

mysql的执行效率_数据库执行效率的对比测试

今天看了一篇很有意思的文章&#xff0c;对比数据库和普通编程语言的效率测试&#xff0c;测试的语言分别是mysql的存储过程&#xff0c;oracle plsql和perl.测试机器是同一台机器上&#xff0c;测试标准是计算100万次的cos函数oracle代码create or replace procedure oraclesp…

linux修改python版本修改哪个配置文件_linux安装python修改默认python版本方法

linux默认是安装了python&#xff0c;默认是安装python2.6.6&#xff0c;可能安装的版本是不能符合我们需要的python要求的。我们需要重新安装python的版本&#xff0c;今天演示一下安装python3首先下载一个 wget 文件的地址 执行命令进行下载下载完成以后进行解压&#xff…

java算法的递归问题设计_java算法-递归算法思想

递归算法是跟常见的算法思想。使用递归算法&#xff0c;往往可以简化代码编写&#xff0c;提高程序的可读性。但是&#xff0c;不适合的递归往往导致程序的执行效率变低。一、递归算法基本思想递归算法即在程序中不断反复调用自身来叨叨求解问题的方法。此处的重点是调用自身&a…

delstr函数python_Python Day26:多态、封装、内置函数:__str__、__del__、反射(反省)、动态导入模块...

## 多态pythonOOP中标准解释:多个不同类型对象,可以响应同一个方法,并产生不同结果,即为多态多态好处:只要知道基类使用方法即可,不需要关心具体哪一个类的对象实现的,以不变应万变,提高灵活性/扩展性多态,一般都需要一个管理多态的方法,方法的函数就是类的对象,在方法中通过点…

java8用什么tomcat_Tomcat8+JDK8安装与配置

一&#xff0c;系统配置1.操作系统&#xff1a;win10 64位2.tomcat版本&#xff1a;Tomcat8 64位3.Java版本&#xff1a;JDK8 64位二&#xff0c;软件下载下载到本地后直接打开安装&#xff0c;修改存储目录&#xff0c;如图&#xff1a;2.2 Tomcat8下载&#xff0c;官网地址&…

逻辑回归python正则化 选择参数_吴恩达机器学习笔记(三)——正则化(Regularization)...

1.过拟合的问题(Over-fitting)如果我们有非常多的特征&#xff0c;我们通过学习得到的假设可能能够非常好地适应训练集(代价函数可能几乎为0)&#xff0c;但是可能会不能推广到新的数据。(1)下图是一个回归问题的例子&#xff1a;第一个模型是一个线性模型&#xff0c;欠拟合&a…

Java简单记事本设计实验报告_基于JAVA的记事本设计报告.doc

基于JAVA的记事本设计报告华北科技学院计算机系综合性实验报告PAGE第 PAGE 11 页XX学校计算机系综合性实验实 验 报 告课程名称 Java程序设计实验学期 至 学年 第 学期学生所在系部 计算机系年级 专业班级学生姓名 学号任课教师实验成绩计算机系制《 Java程序设计》课程综合性实…

谷歌离开游览器不触发_谷歌游览器

谷歌浏览器不错&#xff0c;可保存不同的账户&#xff0c;互相不干扰。有2个账号&#xff0c;工作账号和个人账号&#xff0c;泾渭分明&#xff0c;不会打架&#xff0c;管理账号。总经理管理公司人员&#xff0c;厂长管理工人&#xff0c;业务员要管理自己账号&#xff0c;管理…

java scanner nextlin_java – Scanner nextLine()偶尔会跳过输入

让我猜一下 – 你没有显示使用上面尝试获取lastName的扫描器的代码.在那次尝试中,你没有处理行尾令牌,所以它是悬空的,只是被你试图获取lastName的nextLine()调用吞噬.例如,如果你有这个&#xff1a;Scanner keyboard new Scanner(System.in);System.out.print("Enter a …

python office库_python库编程.os平台.office平台

1.库安装Python库 PyPI – Python Package Index &#xff1a;https://pypi.python.org/(1) Python库的自定义安装&#xff1a;找到库所在网站&#xff0c;根据指示下载安装安装numpy库库所在网站&#xff1a;http://www.numpy.org/下载地址&#xff1a;http://sourceforge.ne…

java编译系统资源不足_Ant编译项目资源不足

今天用ant编译项目出现 [javac] 系统资源不足。的错误&#xff0c;如下Buildfile: build.xml-compile:[javac] Compiling 919 source files to E:\DSHR\dshr\WebContent\WEB-INF\classes[javac][javac][javac] 系统资源不足。[javac] 有关详细信息&#xff0c;请参阅以下堆栈追…

java线程三部分_java 多线程三

注意到 java 多线程一 中 MyThread2 运行结果出现0、-1&#xff0c;那是因为在操作共享数据时没有加锁导致。加锁的方式&#xff1a;1、同步方法2、同步代码块3、锁读过 java.util.concurrent 集合源码就知道&#xff1a;HashMap:public V put(K key, V value) {...}Hashtable:…

python简述定义函数的规则_Python的函数定义

有经验的程序员往往将功能较为独立、且可以被重复使用的代码块封装成函数&#xff0c;可以有效提高代码的模块化、解耦性和重复利用率。我们前面用到的print()函数就是Python的内建函数&#xff0c;我们也可以根据Python给我们提供的规则进行自定义函数。这里我们用PyCharm来进…