day6

news/2024/9/18 21:52:30/文章来源:https://www.cnblogs.com/wjhfree/p/18419398
  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 是数据的范围)
    特点
    适用于范围较小的整数数据。
    不适合处理范围很大的数据或浮点数。
    速度快且时间复杂度稳定,但需要额外的空间。

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

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

相关文章

在idea中使用mysql失败

在idea中测试mysql显示失败idea方面视图 - 工具窗口 - 数据库 或者右边有图标直接点开新建 - 数据源 - mysql名称 - 用户(root) - 密码 - 测试连接如果测试连接有切换相关提示直接点击, 如果出绿色对勾就成功了 到这里本可以结束了, 但是我最开始做的时候这个流程没有成功 以防…

Pyhton调用R语言rpy2包概要

随着深度学习、大数据和AI的发展,Python的热度持续上升,引发了关于选择Python还是R的讨论。作为数据分析工具,两者各有优缺点。在特定领域,如生态学,R仍被广泛应用,而Python则更多用于日常办公自动化,如批量处理文档和Excel。由于数据处理占用了我们大量时间,很多人希望…

自动驾驶运动规划学习_碰撞检测算法_GJK

自动驾驶运动规划学习:碰撞检测算法:GJK Gilbert–Johnson–Keerthi(GJK)算法,是一种用于检测两个凸集是否重叠的高效算法,并且可以得到两个凸集的最小距离.1.4.1 GJK算法原理1.4.1.1 闵可夫斯基差(Minkowski Difference)1.4.1.3 凸性 在二维空间中,如果一个凸集包含原点,…

设计模式之——代理模式

代理模式 前言: 我们一般在租房子时会去找中介,为什么呢?因为你对该地区房屋的信息掌握的不够全面,希望找一个更熟悉的人去帮你做;再比如我们打官司需要请律师,因为律师在法律方面有专长,可以替我们进行操作,表达我们的想法;再比如在淘宝上面买东西,你使用支付宝平台…

一文搞定WeakHashMap

写在前面 在缓存场景下,由于内存是有限的,不能缓存所有对象,因此就需要一定的删除机制,淘汰掉一些对象。这个时候可能很快就想到了各种Cache数据过期策略,目前也有一些优秀的包提供了功能丰富的Cache,比如Google的Guava Cache,它支持数据定期过期、LRU、LFU等策略,但它…

P2710 数列/P2042 [NOI2005] 维护数列

题意(以 P2710 为例)思路 使用 FHQ-Treap 进行求解,清晰明了。对于 insert,先将要插入的数建成一棵树,然后将这棵树放入 FHQ-Treap 中。 对于 delete,将要删除的树分离出来,然后把剩下的部分合并即可,将删除的树的树根丢到废弃节点的栈中以备以后使用(节约空间,不然 …

扩展分析C语言单双引号、反斜杠与注释

目录注释奇怪的注释C风格的注释无法嵌套一些特殊的注释注释的规则建议反斜杠\反斜杠有续行的作用,但要注意续行后不能添加空格回车也能起到换行的作用,那续行符的意义在哪?反斜杠的转义功能单引号和双引号字面值,字符串,字符,字符变量的大小为什么sizeof(1)的大小是4 ?char…

扩展分析单双引号、反斜杠与注释

目录注释奇怪的注释C风格的注释无法嵌套一些特殊的注释注释的规则建议反斜杠\反斜杠有续行的作用,但要注意续行后不能添加空格回车也能起到换行的作用,那续行符的意义在哪?反斜杠的转义功能单引号和双引号字面值,字符串,字符,字符变量的大小为什么sizeof(1)的大小是4 ?char…

C----函数递归之反汇编

环境 win10 vc6.0 debug 代码 关于求阶层问题:n!=n(n-1)!;(n-1)! = (n-1)(n-2)! 例如5!=5(4)! 4!=43! 3!=32! 2!=21 函数递归的出口是1,所以函数递归最重要的条件是去寻找递归的出口 int fun(int i) {int sum = 0;if (i == 1){return 1;}else{sum = i*fun(i-1);}return sum …

地平线占用预测 FlashOcc 参考算法-V1.0

1.简介 3D Occupancy Networks 的基本思路是将三维空间划分成体素网格,并对每个网格进行各类感知任务的预测。目前以网格为中心的方法能够预测每个网格单元的占用率、语义类别、未来运动位移和实例信息。3D occupancy 可以对道路障碍物进行更细粒度的划分,同时获取更精确的占…

手脱upx

其实已经是大一下刚开始的事情了,补个档 手动脱壳の新年快乐 查壳,有壳,UPXX32dbg打开文件,查看初始断点点击PUSHAD跟进,CTRL+*设置EIP,开始F8步过,寻找ESP寄存器第一次单个变红的地址此时的内存窗口开始步过第一次步过就发现ESP单个变红,右键跟进内存窗口然后在第一个…

使用firemin降低火狐内存占用

这些年一直使用火狐浏览器,之前一直在AMD平台的机器使用,没有遇到过内存占用过大的问题(可能也与平台无关)。现在在Intel CPU的机器上使用,时间一久,内存就占用很大。试过Firefox/内存消耗严重里面的办法,效果不明显。也试过修改about:config里面的一些选项,也没有达到…