首页 > 其他分享 >day6

day6

时间:2024-09-18 21:45:30浏览次数:10  
标签:day6 步骤 复杂度 元素 数组 排序 部分

  1. 选择排序
    概述:
    选择排序是一种简单的排序算法,其基本思想是每次从未排序的部分中选择最小(或最大)的元素,然后放到已排序部分的末尾。
    步骤:
    从未排序部分中找到最小的元素。
    将这个最小的元素与未排序部分的第一个元素交换。
    将已排序部分扩大一位,未排序部分缩小一位。
    重复以上步骤直到所有元素排序完成。
    时间复杂度:
    最好情况:O(n²)
    平均情况:O(n²)
    最坏情况:O(n²)
    空间复杂度: O(1)(原地排序)
    特点:
    简单直观,但效率较低。
    不适合处理大量数据的排序。
  2. 冒泡排序
    概述:
    冒泡排序是一种简单的排序算法,其基本思想是通过重复交换相邻元素,使得较大的元素逐渐“浮”到数组的末尾(或较小的元素“沉”到数组的开始)。
    步骤:
    从数组的开始,比较相邻的元素。
    如果前一个元素大于后一个元素,交换它们。
    经过一轮比较后,最大的元素被移到数组的末尾。
    对剩余的部分重复上述步骤,直到整个数组有序。
    时间复杂度:
    最好情况:O(n)(当数组已经有序时)
    平均情况:O(n²)
    最坏情况:O(n²)
    空间复杂度: O(1)(原地排序)
    特点:
    实现简单,但效率较低。
    不适合处理大量数据的排序。
  3. 插入排序概述:
    插入排序是一种简单的排序算法,其基本思想是将每个新元素插入到已经排序好的部分中。
    步骤:
    从数组的第二个元素开始,将当前元素与前面的已排序部分进行比较。
    将当前元素插入到合适的位置,使得已排序部分依然有序。
    对剩余的未排序部分重复以上步骤,直到整个数组有序。
    时间复杂度:
    最好情况:O(n)(当数组已经有序时)
    平均情况:O(n²)
    最坏情况:O(n²)
    空间复杂度: O(1)(原地排序)
    特点:
    对小规模数据或几乎有序的数据排序效率较高。
    适合用于在线排序。
  4. 计数排序
    概述:
    计数排序是一种非比较型排序算法,适用于范围较小的整数数据。其基本思想是通过统计每个元素的出现次数来确定其在排序结果中的位置。
    步骤:
    确定数组中元素的最大值和最小值,计算数据的范围。
    创建一个计数数组,用于统计每个元素的出现次数。
    计算计数数组的前缀和,确定每个元素在排序结果中的最终位置。
    根据计数数组将元素放置到正确的位置上。
    时间复杂度:
    最好情况:O(n + k)
    平均情况:O(n + k)
    最坏情况:O(n + k)
    空间复杂度: O(n + k)(n 是待排序元素的个数,k 是数据的范围)
    特点
    适用于范围较小的整数数据。
    不适合处理范围很大的数据或浮点数。
    速度快且时间复杂度稳定,但需要额外的空间。

标签:day6,步骤,复杂度,元素,数组,排序,部分
From: https://www.cnblogs.com/wjhfree/p/18419398

相关文章

  • c语言_day6(完结)
    目录函数格式:函数的声明函数的调用:函数名(实参)形参和实参区别:函数传参值传递地址传递数组传递开辟堆区空间string函数族strcpystrncpystrcatstrcmp递归函数结构体格式:结构体变量赋值访问重定义typedef结构体数组初始化结构体指针赋值:大小结构体......
  • day6
    lis=[11,22,33,44,55,66,77,88,99,90]dic=dict()dic['k1']=[]dic['k2']=[]print(dic)foriinlis:ifi>66:dic['k1'].append(i)elifi<66:dic['k2'].append(i)print(dic)####################################......
  • mini-lsm通关笔记Week1Day6
    项目地址:https://github.com/skyzh/mini-lsm个人实现地址:https://gitee.com/cnyuyang/mini-lsmSummary在本章中,您将:使用L0flush实现LSM写路径。实现逻辑以正确更新LSM状态。要将测试用例复制到启动器代码中并运行它们,cargoxcopy-test--week1--day6cargoxsch......
  • spring学习日记-day6-AOP
    一、学习目标        面向切面的编程(AOP)通过提供另一种思考程序结构的方式来补充面向对象的编程(OOP)。OOP中模块化的关键单位是类,而AOP中模块化的单位是切面。切面使跨越多种类型和对象的关注点(如事务管理)模块化。    spring的关键组件之一是AOP框架。虽然Spr......
  • 【代码随想录Day6】哈希表Part01|判断一个元素是否出现集合里
    哈希表理论基础文章讲解:哈希表理论基础要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。242.有效的字母异位词题目链接/文章讲解/视频讲解:有效的字母异位词定义一个哈希表record,遍历s,记录s中每个字母出现的次数,遍历t,减去t中每个字母出现的次数,遍历......
  • day6打卡
    四数相加classSolution{public:intfourSumCount(vector&nums1,vector&nums2,vector&nums3,vector&nums4){unordered_map<int,int>umap;for(intnum1:nums1){for(intnum2:nums2){umap[num1+num2]++;}}intcount=0;for(int......
  • day6 哈希表part01: 242.有效的字母异位词|349. 两个数组的交集|202. 快乐数|1. 两数
    242.有效的字母异位词 classSolution{publicbooleanisAnagram(Strings,Stringt){int[]record=newint[26];//a=97.soa-a=0,b-a=1.直接使用减法,不用记acii码值。//遍历第一个string++,遍历第二个string--.数组里的数字......
  • Linux云计算 |【第二阶段】OPERATION-DAY6
    主要内容:RPM打包(生成目录结构、拷贝源码软件包、编写SPEC文件)、VPN服务器(GREVPN、PPTPVPN、L2TP+IPSecVPN)、Systemd服务管理(命令行工具、编写Unit配置文件)一、RPM软件打包RPM(RedHatPackageManager)是一种用于Linux系统的软件包管理系统,主要用于RedHat系列发行版(......
  • 学习Java的日子 Day68 jQuery操作节点,Bootstrap
    jQuery1.jQuery操作DOMDOM为文档提供了一种结构化表示方法,通过该方法可以改变文档的内容和展示形式在访问页面时,需要与页面中的元素进行交互式的操作。在操作中,元素的访问是最频繁、最常用的,主要包括对元素属性attr、内容html、值value、CSS的操作1.1操作内容获取......
  • 『区间最值操作 & 区间历史最值』Day6
    1势能1.1有一类之前就见过的操作。区间取模区间开方。开方是说在\(\log\logB\)次过后就不变了,所以这之前暴力即可。取模则是说如果一个数能取模那么至少会减少一半,所以一个数最多暴力操作\(\logB\)次就没了。对于一个区间你维护最大值看是否需要递归进行操作即可。上......