简单排序算法:简单选择排序(选择排序)

排序算法-选择排序 简单选择排序(Simple Selection Sort)就是通过n-i次关键字的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1  时间复杂度:      1) 最好情况:本身有序,需要比较n-1次 时间复杂度为o(n)      2)最坏情况:逆序情况,需要比较(n-1)+(n-2)+...+2+1=n(n-1)/2 时间复杂度为o(n²) 性能上略优于冒泡排序 减少了交换 阅读详情

简单选择排序法:通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1<=i<=n》)个记录交换。

import java.util.Arrays;

public class Solution {
    public static void main(String[] args) {
        Solution s = new Solution();
        int[] arr = {4,5,1,6,2,7,3,8,8,4};
        s.SelectSort(arr);
        System.out.println(Arrays.toString(arr));    //输出:[1, 2, 3, 4, 4, 5, 6, 7, 8, 8]
    }

    private void SelectSort(int[] arr)
    {
        for (int i = 0; i < arr.length - 1; i++)
        {
            int min = i;
            for (int j = i + 1; j < arr.length; j++)
            {
                if (arr[j] < arr[min])
                    min = j;
            }
            if (i != min)
                swap(arr, i, min);
        }
    }
    private void swap(int[] arr, int i, int j)
    {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
}


简单选择排序复杂度分析:

特点:交换移动数据次数少

比较次数:无论最好最差的情况,比较次数都是一样多,第i次排序需要进行n-i次关键字的比较,此时需要比较n-1 + n-2 +... + 1 = n(n-1)/2次

交换次数:最好情况下,交换0次;最坏情况下,初始降序时,交换n-1次。

最终的排序时间是比较和交换的次数总和,总的时间复杂度为O(n^2)。

尽管与冒泡同为O(n^2),但是简单选择排序的性能略优于冒泡排序。


漫谈经典排序算法:一、从简单选择排序到堆排序的深度解析 1、序言 这是《漫谈经典排序算法系列》第一篇,该篇从最简单的选择排序算法谈起,由浅入深的详细解析两种选择排序算法的过程及性能比较。逐步揭露选择排序的本质及其基本思想。 各种排序算法的解析请参考如下: 《漫谈经典排序算法:一、从简单选择排序到堆排序的深度解析》 《漫谈经典排序算法:二、各种插入排序解析及性能比较》 《漫谈经典排序算法:三、冒泡排序 && 快速排序》 《漫谈经典排序算 阅读详情

相关推荐

【Collibra 驱动 IPD 数据血缘治理】:三层图谱分层展示体系与全链路追踪的技术业务实践

(应用级/数据级/字段级)是理解复杂数据流动的核心手段。其价值不仅体现在可视化的直观性,更在于通过。技术保障血缘不可篡改性,进一步提升IPD数据治理的可靠性。,解决了跨层级血缘分析的性能与可用性矛盾。数据血缘图谱要素定义(字节跳动/腾讯云/信安标委)实现对IPD数据的精准追踪,而数据血缘图谱的。分层交互设计标准(智慧城市数据中台规范)Collibra技术文档(2024)字段级血缘的挑战与解决路径。自动优化血缘路径,并深化。字段级血缘技术实现方案。Collibra通过。图数据库性能优化原理。

百态·数智思维 | 聚焦大数据、量化与未来AI 1244

【C语言学习笔记】:简单选择排序

最终得到(0,1,2,3,6,5,4,9,8,7),其中(0,1,2)已经有序。最终得到(0,1,3,2,6,5,4,9,8,7),其中(0,1)已经有序。第二趟子排序:整个记录序列中(0,3,1,2,6,5,4,9,8,7)的数据(0)已经有序,只需针对子数据记录序列(3,1,2,6,5,4,9,8,7)。第三趟子排序:整个记录序列中(0,1,3,2,6,5,4,9,8,7)的数据(0,1)已经有序,只需针对子数据记录序列(3,2,6,5,4,9,8,7)。

Jiangziyadizi的博客 293

TSMaster如何用珠海创芯CAN卡实现高效CAN通信(附完整驱动安装指南)

本文详细介绍了如何使用TSMaster软件与珠海创芯CAN卡实现高效CAN通信,包括驱动安装、系统配置、ControlCAN.dll替换及TSMaster集成配置等关键步骤。通过实战指南和故障排除技巧,帮助工程师快速搭建稳定可靠的CAN通信测试环境,适用于汽车电子和工业控制等领域。

weixin_29201859的博客 481

直接选择排序

基本概念算法思想:第一趟从n个元素的数据序列中选出关键字最小/大的元素并放在最前/后位置,下一趟从n-1个元素中选出最小/大的元素并放在最前/后位置。以此类推,经过n-1趟完成排序。时间复杂度选择排序的交换操作介于 0 和 (n - 1) 次之间。选择排序的比较操作为 n (n - 1) / 2 次之间。选择排序的赋值操作介于 0 和 3 (n - 1) 次之间。比较次数O(n^2),比较次数与关...

J~的博客 678

【ArcGIS】ArcMap中北京1954坐标系转WGS84的实战技巧与参数选择

本文详细解析了在ArcMap中将北京1954坐标系数据转换为WGS84坐标系的完整流程与核心技巧。针对常见的坐标偏移问题,文章首先强调了数据“归位”的重要性,并提供了处理假东、假北值的具体操作步骤。随后,重点阐述了地理变换参数(如Beijing_1954_To_WGS_1984_2)的选择逻辑及其对转换精度的决定性影响,并结合案例说明了参数选择、中央经线确认及结果验证等关键环节,旨在帮助用户高效、准确地完成坐标转换。

f6g7h8i9j的博客 330

百度网盘开放平台OAuth 2.0授权全流程解析

本文详细解析了百度网盘开放平台OAuth 2.0授权全流程,包括创建应用、获取凭证、授权码模式详解以及access_token的使用与刷新。通过实际案例和代码示例,帮助开发者快速掌握接口调用技巧,避免常见错误,确保安全高效地接入百度网盘API。

wind6的博客 1266

七大排序算法之简单算法系列(二)——简单选择排序

简单选择排序(Simple Selection Sort)原理: 通过n-1次关键字之间的比较,从n-i+1个记录中找到关键字最小的记录,并和第i个记录交换。 在冒泡排序中,我们每次都做了交换,而这里我们不需要每次都进行交换,而是把最小的数和第i个记录交换。 直接看代码进行理解。 简单选择排序的代码实现: #include &lt;iostream&gt; using namespa...

满城丶琉璃月 501

别再乱点U盘里的.exe了!手把手教你彻底清除那个伪装成Usb Disk的蠕虫病毒

本文详细介绍了如何识别、清除和预防伪装成Usb Disk的蠕虫病毒。从识别感染迹象到安全备份文件,再到深度清理病毒残留和构建防护策略,提供了一套完整的U盘病毒解决方案。特别提醒用户注意U盘病毒的风险,并养成良好的使用习惯。

weixin_30496999的博客 670

选择排序—简单选择排序(Simple Selection Sort)

选择排序—简单选择排序(Simple Selection Sort) 基本思想 排序流程 算法实现 简单选择排序 改进二元选择排序 算法分析

wgiyq的博客 2040

国密SSL实战:手把手教你用Wireshark抓包分析GMTLS协议(附证书链验证技巧)

本文提供了一份国密SSL(GMTLS)协议的实战抓包分析指南。通过详细讲解Wireshark的配置、GMTLS握手流程的捕获与筛选,以及双证书机制和证书链的深度解析,帮助工程师和开发人员掌握使用Wireshark排查国密SSL连接问题、进行密评和协议调试的核心技巧。

rgv234567的博客 502

【系统分析师】高分论文:论基于构件的软件开发(气象灾害影响评估系统)

本文以某手机气象灾害影响评估系统为例,探讨了基于构件技术的软件开发实践。通过分析开发中常见的功能模块重复问题,提出建立企业构件库、针对性选择构件和加强构件管理的解决方案。项目实施中成功复用登录模块等通用构件,并针对气象数据转换需求开发新构件,最终在8个月内高质量完成系统建设。文章总结了构件开发的三个关键点:构件库建设是基础、构件选择需精准、构件管理要规范。同时指出需注意全新需求开发、性能优化等问题,建议通过培训提升团队对构件的理解力。该案例证明构件技术能有效缩短周期、降低成本,为企业积累可复用的技术资产。

数据知道的博客 4253

简单选择排序流程图_图解排序算法:3种简单排序(选择、冒泡、直接插入)

来自:dreamcatcher-cx链接:cnblogs.com/chengxiao/p/6103002.html00 前言排序是数据处理中十分常见且核心的操作,虽说实际项目开发中很小几率会需要我们手动实现,毕竟每种语言的类库中都有n多种关于排序算法的实现。但是了解这些精妙的思想对我们还是大有裨益的。本文简单温习下最基础的三类算法:选择、冒泡、插入。先定义个交换数组元素的函数,供排...

weixin_42644410的博客 7034

国科大学习资料--模式识别与机器学习(黄庆明)--期末复习题2(含答案)

国科大学习资料–模式识别与机器学习(黄庆明)–期末复习题2(含答案) 国科大学习资料–模式识别与机器学习(黄庆明)–期末复习题2(含答案) 国科大学习资料–模式识别与机器学习(黄庆明)–期末复习题2(含答案) ...

无名何许人的博客 1万+

对以下6种常用的内部排序算法进行比较:起泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、堆排序。

题目要求: (1)对以下6种常用的内部排序算法进行比较:起泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、堆排序。 (2)待排序表的表长不小于100;其中的数据要用伪随机数产生程序产生;至少要用5组不同的输入数据作比较;比较的指标为有关键字参加的比较次数和关键字的移动次数(关键字交换计为3次移动)。 (3)最后要对结果作出简单分析,包括对各组数据得出结果波动大小的解释。 (4)希尔排序:先将整个待排记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次

qq_43541242的博客 4265

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java 排序算法: 选择排序 (简单选择排序+堆排序)

文章目录五大类内部排序算法简单选择排序: SelectSort算法思路实现简单选择排序 测试80000个随机数据的排序效率堆排序: HeapSort算法思路:实现:堆选择排序 测试八百万个随机数据的排序效率 (还是快排更胜一筹) 五大类内部排序算法 插入排序 交换排序 选择排序 简单选择排序 堆排序 归并排序 基数排序 简单选择排序: SelectSort 算法思路 选择排序一共有[数组大小-1]轮排序 每一轮排序, 又是一个循环, 循环的规约如下 先设定当前的这个数是最小值 与后面的数据

Beyond_Nothing 509

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

简单排序算法总结:冒泡排序、选择排序与插入排序

算法平均时间复杂度最好情况最坏情况空间复杂度稳定性主要特点冒泡排序O(n²)O(n) (优化后)O(n²)O(1)稳定思想简单,效率低,可通过标志位优化选择排序O(n²)O(n²)O(n²)O(1)不稳定交换次数少(最多 n-1 次),但比较次数固定插入排序O(n²)O(n)O(n²)O(1)稳定对小规模或基本有序数据高效,适合增量排序冒泡排序、选择排序和插入排序都是基于比较的简单排序算法,时间复杂度为 O(n²),不适合大规模数据排序。冒泡排序。

2603_95838138的博客 327

排序算法(1):简单选择排序

基本思想   简单选择排序是一种简单并且非常直观的排序算法。它的思想是每次从未排序序列中找到最小值,然后将其放到已排序序列的末尾,重复这一过程直到不存在未排序元素。 算法流程 以长度为 nnn 的数组为例: 第一趟排序:从第一个元素开始遍历整个数组,找出最小值,和第一个元素交换; 第二趟排序:找出第二个元素到第 nnn 个元素中的最小值,和第二个元素交换; 第三趟排序:找出第三个元素到...

Lucky_Go的博客 2246

排序算法之三种基本排序:直接插入排序、冒泡排序、简单选择排序

1、冒泡排序 时间复杂度:O(n^2) 基本思想:相邻的元素两两进行比较,反序则交换,这样每一趟会将最小或最大的元素“浮”到顶端,最终达到完全有序。 代码实现如下: public class BubbleSort { /** * 冒泡排序:时间复杂度O(n^2) * 思想:基本就是相邻的元素两两进行比较,反序则交换,这样每一趟会将最小或最大的元素“浮”到顶端,最终达到完全有序。 * @author lst ...

TT_130616的博客 1810

排序算法:直接插入排序,折半插入排序,冒泡排序,快速排序,简单选择排序

一、直接插入排序 基本操作是将一条记录插入到已排好序的有序表中,从而得到一个新的、记录数量增1的有序表。 算法步骤: ①设待排序的记录存放在数组r[1...n]中,r[1]是一个有序序列; ②循环n-1次,每次使用顺序查找法,查找r[i](i=2...n)在已排好序的序列r[1...i-1]中的插入位置,然后将r[i]插入表长为i-1的有序序列r[1...i-1],直到r[n]插入表长为n-1的有序序列r[1...n-1],最后得到一个表长为n的有序序列。 void insertsort(nod

xiaoyeren_ITRoad的博客 3026

三个简单排序算法:冒泡、简单选择、直接插入

第一个是冒泡,最简单,但是性能一般(以下是改进版的,在冒泡过程中加入了flag判断有没交换过) public class BubbleSort { public static void main(String[] args) { int i,j; ...

221

Java 简单选择排序算法,Java排序算法(2):简单选择排序

Java排序算法(二):简单选择排序[基本思想]在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数种再找出最小的与第二个位置的数交换,如此循环至倒数第二个数和最后一个数比较为止。算法关键:找到最小的那个数,并用变量记住它的下标。[java实现]public class SimpleSelectionSort {public static void main(String[] ...

weixin_28724661的博客 257

排序算法:简单选择排序

简单选择排序是一种选择排序。 选择排序:每趟从待排序的记录中选出关键字最小的记录,顺序放在已排序的记录序列末尾,直到全部排序结束为止。 简单排序处理流程 (1)从待排序序列中,找到关键字最小的元素; (2)如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换; (3)从余下的 N - 1 个元素中,找出关键字最小的元素,重复(1)、(2)步,直到排序结束。 如图所示,每趟...

HelloWorld搬运工 973

排序算法:简单选择排序算法实现及分析

简单选择排序算法介绍简单选择排序(Simple Selection Sort)就是通过n-1次关键字排序之间的比较,从n-i+1个记录中选择关键字最小的记录,并和第i(1&lt;=i&lt;=n)记录交换。这是一般书上的定义。实际上选择排序,就是每一轮选者一个最值出来,然后在剩下的数据中又选择一个最值出来,直到数据被选择完毕。这就是所谓的简单选择排序算法。简单选择排序算法实现在下面代码中,每一轮内...

重庆李四 2018

选择排序:简单直观的排序算法

选择排序是一种简单直观的排序算法,掌握它不仅有助于理解排序的基本思想,也能帮助我们更好地学习其他排序算法。希望这篇文章对大家有所帮助,祝大家刷题愉快!本文由 cannonjinx 原创,转载请注明出处。

cannonjinx的博客 4100

常见的五类排序算法图解和实现(选择类:简单选择排序,锦标赛排序,树形选择排序,堆排序)

 常见的五类排序算法图解和实现(选择类:简单选择排序,锦标赛排序,树形选择排序,堆排序) 选择类的排序算法 简单选择排序算法 采用最简单的选择方式,从头到尾扫描待排序列,找一个最小的记录(递增排序),和第一个记录交换位置,再从剩下的记录中继续反复这个过程,直到全部有序。 具体过程: 首先通过 n –1 次关键字比较,从 n 个记录中找出关键字最小的记录,将它与第一个记录

jia1506的博客 1847

选择排序算法:简单但有效的排序方法

在计算机科学中,排序算法是基础且重要的主题之一。选择排序(Selection Sort)是其中一个简单但非常有用的排序算法。本文将详细介绍选择排序的原理和步骤,并提供Java语言的实现示例。

修己xj的博客 1656
上一篇: 简单排序算法:冒泡排序(交换排序)
下一篇: 改进排序算法:希尔排序(对直接插入排序的改进)
when_bounce
博客等级 码龄10年 20粉丝 238原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值