码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【21天算法学习】直接选择排序


    作者简介:
    🍀姓姜,字君竹。
    🍁浅薄观点:科以载文,文以载道
    🌱软件技术升计科,计划考研
    🌾要有最朴素的生活和最遥远的梦想,即使明日,天寒地冻,路遥马亡​​​

    1. 概念及介绍
        直接选择排序也是一种简单的排序方法,它的基本思想是:第一次从R[0]~R[n-1]中选取最小值,与R[0]交换,第二次从R[1]~R[n-1]中选取最小值,与R[1]交换,…,第i次从R[i-1]~R[n-1]中选取最小值,与R[i-1]交换,…,第n-1次从R[n-2]~R[n-1]中选取最小值,与R[n-2]交换,总共通过n-1次,得到一个按排序码从小到大排列的有序序列。

    2. 时间空间复杂度
        在直接选择排序中,共需要进行n-1次选择和交换,每次选择需要进行n - i次比较 (1 <= i <= n-1),而每次交换最多需要3次移动,因此,总的比较次数C = (n*n - n)/2;
        总的移动次数3(n-1),由此可知,直接选择排序的时间复杂度为 O(n2) ,所以当记录占用字节数较多时,通常比直接插入排序的执行速度快些;
        对于空间复杂度来说,简单选择排序仅需一个存储空间用于记录交换的暂存单元,即空间复杂度为 O(1);
        由于在直接选择排序中存在着不相邻元素之间的互换,因此,直接选择排序是一种不稳定的排序方法。

    3. 图解
      在这里插入图片描述

    4. 代码实现

    int main() {
    	int a[] = { 22,45,21,23,54,76,8,67,67 };
    	int sz = sizeof(a) / sizeof(a[0]);
    	int i = 0;
    	for(i = 0; i < sz - 1; i++){
    		int k = i;
    		int j = 0;
    		for (j = i + 1; j < sz; j++) {
    			if (a[j] < a[k]) {
    				k = j;
    			}
    		}
    		if (k != i) {
    			int tmp = a[i];
    			a[i] = a[k];
    			a[k] = tmp;
    		}
    	}
    	for (i = 0; i < sz; i++) {
    		printf("%d ", a[i]);
    	}
    
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    活动地址:CSDN21天学习挑战赛

    学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。

  • 相关阅读:
    git merge 和 git rebese的区别
    基于SpringBoot的教学资源库系统的设计与实现
    如何测量晶振的频率
    WSL 解决code .报‘code‘ not fount无法打开Vscode问题
    Python得到字符的阿斯克码值 chr ord
    Spring依赖注入源码分析
    诊断寻址方式
    BaseBottomSheetFragment嵌套RecyclerView滑动冲突
    神经网络中epoch、batch、batchsize区别
    四通道信息融合下的齿轮箱故障诊断(Python代码,SVM模型和CNN模型进行对比实验,解压缩即可运行,有详细中文注释)
  • 原文地址:https://blog.csdn.net/qq_47658735/article/details/126184281
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号