【leetcode】数组排序

2023-09-19 01:45:11

【leetcode】数组排序

task03 主要了解了数组中常见的排序方法:

1.常见数组排序方法

  • 冒泡排序(Bubble Sort):
    冒泡排序是一种简单的排序算法,它多次遍历数组,比较相邻的元素并交换它们,直到整个数组按升序排列。时间复杂度为O(n^2)。

  • 选择排序(Selection Sort):
    选择排序是一种简单的排序算法,它在每次遍历中选择数组中的最小元素并将其放在已排序部分的末尾。时间复杂度为O(n^2)。

  • 插入排序(Insertion Sort):
    插入排序将数组分为已排序和未排序两部分,然后逐个将未排序元素插入已排序部分的正确位置。时间复杂度为O(n^2)。

  • 快速排序(Quick Sort):
    快速排序是一种分治算法,它选择一个基准元素,将数组分成小于基准和大于基准的两个子数组,然后递归地对子数组进行排序。平均情况下,时间复杂度为O(n log n)。

  • 归并排序(Merge Sort):
    归并排序也是一种分治算法,它将数组分成两个子数组,分别对子数组进行排序,然后将它们合并为一个有序数组。时间复杂度为O(n log n)。

  • 堆排序(Heap Sort):
    堆排序使用二叉堆数据结构来进行排序。它首先将数组构建成一个最大堆(或最小堆),然后逐步移除堆顶元素,将其放入已排序部分。时间复杂度为O(n log n)。

  • 计数排序(Counting Sort):
    计数排序适用于非负整数数组,它统计每个元素的出现次数,然后按顺序构建排序后的数组。时间复杂度为O(n + k),其中k是非负整数的范围。

  • 桶排序(Bucket Sort):
    桶排序将元素分散到若干个桶中,然后对每个桶内的元素进行排序,最后将桶中的元素按顺序合并。时间复杂度取决于桶的数量和每个桶内的排序算法。

2.练习题目

更多推荐

LVGL移植win端模拟显示流畅解决方案-使用 SquareLine 生成前端 UI 文件

lvgl_port_win_vscode在win平台对lvgl方便的进行模拟显示,程序文件结构清晰,lvglwithSDL2,cmake构建,VsCode一键运行,使用SquareLine生成前端UI文件,win上直接跑。相比官方的lvgl移植到win端的几种方法SimulatoronPC—LVGLdocumentat

【STM32】WWDG—窗口看门狗

在一个设定好的区间进行喂狗与独立看门狗不同的是,独立看门狗只需要在计时到0之前喂狗。而窗口看门狗需要在设定好的区间内进行喂狗,否则进行reset。下限递减计数器不断的往下递减计数,当减到一个固定值0X40时还不喂狗的话,产生复位,这个值叫窗口的下限,是固定的值,不能改变。上限是窗口看门狗的计数器的值在减到某一个数之前喂

人工智能安全-6-SQL注入检测

0提纲概述SQL注入方法SQL注入的检测方法SQL语句的特征提取天池AI上的实践1概述SQLIA:SQLinjectionattackSQL注入攻击是一个简单且被广泛理解的技术,它把SQL查询片段插入到GET或POST参数里提交到网络应用。由于SQL数据库在Web应用中的普遍性,使得SQL攻击在很多网站上都可以进行。并

AIGC(生成式AI)试用 6 -- 从简单到复杂

从简单到复杂,这样的一个用例该如何设计?之前浅尝试用,每次尝试也都是由浅至深、由简单到复杂。一点点的“喂”给生成式AI主题,以测试和验证生成式AI的反馈。AIGC(生成式AI)试用1--基本文本_Rolei_zl的博客-CSDN博客AIGC(生成式AI)试用2--胡言乱语_Rolei_zl的博客-CSDN博客AIGC(

测试域: 流量回放-工具篇jvm-sandbox,jvm-sandbox-repeater,gs-rest-service

JVM-SandboxJvm-Sandbox-Repeater架构_小小平不平凡的博客-CSDN博客https://www.cnblogs.com/hong-fithing/p/16222644.html流量回放框架jvm-sandbox-repeater的实践_做人,最重要的就是开心嘛的博客-CSDN博客[jvm-s

HTTP代理反爬虫技术详解

HTTP代理是一种网络技术,它可以将客户端的请求转发到目标服务器,并将服务器的响应返回给客户端。在网络安全领域中,HTTP代理经常被用来反爬虫,以保护网站的正常运营。HTTP代理反爬虫的原理是通过限制访问者的IP地址、访问频率、User-Agent和验证码验证等方式,来限制恶意爬虫的访问。下面我们来具体分析一下这几种方

拓世AIGC | 大语言模型螺旋上升式进化,人文、技术与未来

本月初,上海世博园举办外滩大会见解论坛中,众多学者和企业家共同探讨了大语言模型时代的人机关系、硅基生命和碳基生命未来之争等议题。面对全新的局面,论坛释放出积极信号和值得持续关注的论点。从黄浦江的波涛翻涌,我们捕捉到了人工智能未来科技的波澜壮阔。(汇集近20位两院院士、诺贝尔奖和图灵奖得主,超500位科技企业家和专家学者

Websocket集群解决方案以及实战(附图文源码)

最近在项目中在做一个消息推送的功能,比如客户下单之后通知给给对应的客户发送系统通知,这种消息推送需要使用到全双工的websocket推送消息。所谓的全双工表示客户端和服务端都能向对方发送消息。不使用同样是全双工的http是因为http只能由客户端主动发起请求,服务接收后返回消息。websocket建立起连接之后,客户端

WebMvcConfigurerAdapter、WebMvcConfigurer、WebMvcConfigurationSupport

WebMvcConfigurerAdapter、WebMvcConfigurer、WebMvcConfigurationSupport的关系?WebMvcConfigurerAdapter、WebMvcConfigurer和WebMvcConfigurationSupport是SpringMVC框架中用于配置Web应用

android系统目录结构

文章目录android系统目录结构问答偏好设置保存在哪里在应用设置中点击清除数据,清除的是什么在应用设置中点击清除缓存,清除的是什么参考android系统目录结构/-system(一般只有root权限才能访问)-data-app(存放应用程序的APK文件)-data(内部存储)-<安装的应用包名>-app_textur

lock和synchronized的区别

lock和synchronized都是在多线程环境下用于保护共享资源的机制,但它们有一些重要的区别:实现方式:synchronized是Java语言内置的关键字,可以用于方法或代码块级别的同步。Lock是一个接口,位于java.util.concurrent.locks包下,提供了更灵活的锁定机制。灵活性:Lock提供

热文推荐