数据结构中各个排序的定义以及代码表示

在数据结构中,排序(Sorting)是将一组数据按照特定的顺序重新排列的过程。排序算法是计算机科学中的经典问题,有多种不同的排序算法可供选择,每种算法都有其独特的特点和适用场景。

下面介绍几种常见的排序算法的定义和示例代码:

1.冒泡排序(Bubble Sort):

冒泡排序是一种简单的排序算法,它重复地遍历待排序的元素,比较相邻的两个元素并交换位置,直到整个序列有序为止。

其代码如下:

def bubble_sort(arr):
    n = len(arr)
    for i in range(n):
        for j in range(0, n - i - 1):
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]

2.插入排序(Insertion Sort):

插入排序是一种简单直观的排序算法,它通过构建有序序列,对未排序的数据逐个进行插入,将每个元素插入到已排序序列的适当位置。

其代码如下:

def insertion_sort(arr):
    n = len(arr)
    for i in range(1, n):
        key = arr[i]
        j = i - 1
        while j >= 0 and arr[j] > key:
            arr[j + 1] = arr[j]
            j -= 1
        arr[j + 1] = key

3.选择排序(Selection Sort):

选择排序是一种简单直观的排序算法,它每次从待排序的数据中选择最小(或最大)的元素,将其放到已排序序列的末尾,直到整个序列有序为止。

def selection_sort(arr):
    n = len(arr)
    for i in range(n):
        min_idx = i
        for j in range(i + 1, n):
            if arr[j] < arr[min_idx]:
                min_idx = j
        arr[i], arr[min_idx] = arr[min_idx], arr[i]

4.快速排序(Quick Sort):

快速排序是一种高效的排序算法,它使用分治的思想将序列分为较小和较大的两部分,然后递归地对这两部分进行排序。

def quick_sort(arr, low, high):
    if low < high:
        pivot = partition(arr, low, high)
        quick_sort(arr, low, pivot - 1)
        quick_sort(arr, pivot + 1, high)

def partition(arr, low, high):
    pivot = arr[high]
    i = low - 1
    for j in range(low, high):
        if arr[j] < pivot:
            i += 1
            arr[i], arr[j] = arr[j], arr[i]
    arr[i + 1], arr[high] = arr[high], arr[i + 1]
    return i + 1

代码展示了几种常见的排序算法的定义和实现方式。除了以上提到的排序算法,还有许多其他的排序算法,如归并排序、堆排序、计数排序等,每种算法都有其特定的优势和适用场景。选择合适的排序算法取决于数据规模、性能要求和其他约束条件。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

企微hook源码第二弹

免费的企微框架&#xff0c;可下载测试。 支持文本消息&#xff0c;图片消息&#xff0c;视频消息&#xff0c;文件消息。 有兴趣可以进群交流。649480745&#xff0c;群内不定期开源企微hook源码 接下来就是第二弹的企微hook源码。后续会在群内开源完整源码。

go并发模式之----使用时顺序模式

常见模式之二&#xff1a;使用时顺序模式 定义 顾名思义&#xff0c;起初goroutine不管是怎么个先后顺序&#xff0c;等到要使用的时候&#xff0c;需要按照一定的顺序来&#xff0c;也被称为未来使用模式 使用场景 每个goroutine函数都比较独立&#xff0c;不可通过参数循环…

centos7 挂载磁盘

centos7 挂载磁盘 1.对磁盘进行分区1.1.fdisk -l 查看磁盘1.2.对磁盘进行分区1.3 验证 2.磁盘格式化3 .磁盘挂载到对应目录3.1 挂载3.2 验证 4. 开机自动挂载磁盘4.1 查看uuid4.2 写入开机文件4.3 重启4.4.验证 1.对磁盘进行分区 1.1.fdisk -l 查看磁盘 &#xff08;注&#…

QPaint绘制自定义仪表盘组件03

网上视频抄的&#xff0c;用来自己看一下&#xff0c;看完就删掉 ui mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QDebug> #include <QtMath> #include <QDialog> #include <QPainter> #include …

端接电阻没选对,DDR颗粒白费?

高速先生成员--姜杰 端接可以解决很多反射问题&#xff0c;如果还有问题&#xff0c;有没有一种可能是端接电阻阻值没选对&#xff1f; 对于点到点的拓扑&#xff0c;末端并联电阻的阻值比较容易选择&#xff0c;端接电阻阻值R与传输线特征阻抗一样即可。 VTT为1V时&#xff0c…

Linux-查看服务器配置信息

一、查看操作系统 1.1、查看操作系统的版本 命令:cat /etc/redhat-release 1.2、查看系统内核 命令:uname –a 二、查看cpu信息 2.1、所有信息 lscpu [root@tes ~]# lscpu Architecture: x86_64 ##cpu架构 CPU op-mode(s): 32-bit, 64-bit Byte Order:…

大模型日报|今日必读的5篇大模型论文

大家好&#xff0c;今日必读的大模型论文来啦&#xff01; 1.杨立昆团队提出图像世界模型&#xff1a;在视觉表征学习中学习和利用世界模型 联合嵌入预测架构&#xff08;JEPA&#xff09;通过利用世界模型进行学习&#xff0c;被认为是一种很有前途的自监督方法&#xff0c;…

[环境配置]ssh连接报错“kex_exchange_identification: read: Connection reset by peer”

已经被VScode ssh毒死好几次了&#xff0c;都是执行命令意外中断&#xff0c;然后又VSCode里连不上、本机Terminal也连不上了。。。 重启远程服务器&#xff0c;VSCode可以连上了&#xff0c; 系统ssh还是不行&#xff0c;报错“kex_exchange_identification: read: Connecti…

Linux系统CPU模式部署Qwen1.5-14B

Qwen1.5已适配Ollama。 Ollama 是一个命令行聊天机器人&#xff0c;它使得几乎可以在任何地方使用大型语言模型变得简单。 下载 Ollma 安装文件 访问以下网站&#xff1a;https://ollama.com/download/linux 执行&#xff1a;curl -fsSL https://ollama.com/install.sh | sh…

大地测量学课堂笔记:1、绪论

慕课网址&#xff1a;https://www.icourse163.org/course/WHU-1464124180?fromsearchPage&outVendorzw_mooc_pcssjg_https://www.icourse163.org/course/WHU-1464124180?fromsearchPage&outVendorzw_mooc_pcssjg_ 1. 大地测量学的定义 大地测量学是专门研究精确测量…

MySQL基础-----可视化工具DataGrip安装与使用

目录 前言 安装DataGrip 使用 1.添加数据源 2.展示所有数据库 3. 创建数据库 4.创建表 5.修改表结构 6. 在DataGrip中执行SQL语句 汉化 前言 上一期&#xff0c;我们已经讲解了通过DDL 语句&#xff0c;如何操作数据库、操作表、操作表中的字段&#xff0c;而通过 D…

计算机提示vcruntime140.dll丢失,教你5个方法快速解决dll问题

当计算机系统中无法找到vcruntime140.dll这个特定的动态链接库文件时&#xff0c;可能会引发一系列运行问题&#xff0c;具体表现形式多样且影响范围较广。对于依赖于该文件运行的各类软件应用来说&#xff0c;缺失vcruntime140.dll将直接导致程序无法正常启动或执行&#xff0…

XSS_lab(level6-level10)

level6 仍旧输入:<script>alert(1)</script> script被加了下划线 尝试on事件 也被加了下划线 尝试伪协议:"><a hrefjavascript:alert(1)>1</a>// 还是被加了下划线&#xff0c;那么就要尝试绕过方法了&#xff1a; 我所知的几种绕过方法&a…

ASPICE 4.0 Upgrade Training升版资质更新及升版变化快速解读

ASPICE 4.0 升版变化快速解读 亚远景科技在3月1日举办了ASPICE 4.0 升版变化快速解读培训会&#xff0c;ASPICE首席评估师胡浩在会上进行了精彩分享&#xff0c;部分内容截图&#xff1a; 资料领取请关注我们公众号&#xff1a;研发管理 回复关键词“ASPICE升版变化”即可领取…

牛客练习赛122

D:圆 正着求删除的最小代价不好做&#xff0c;采用逆向思维&#xff0c;求选择一些不相交的线段使得构成一个圆的代价尽量大&#xff0c;最后答案就是所有线段权值之和减去最大代价。 那么如何求这个最大代价呢&#xff1f;显然区间DP 老套路&#xff1a;破环成链&#xff0…

微信小程序中使用特使字体

1、首先下载字体文件 推荐几个常用下载字体的网站 https://font.chinaz.com/zhongwenziti.html https://www.hellofont.cn/ 2、转换字体 使用下面这个网站进行字体转换 https://transfonter.org/ 点击add fonts 按钮进行上传刚刚下载的字体文件选择formats格式&#xff1a;可…

38. 【Linux教程】Linux 修改文件权限

前面小节介绍了用户权限相关的知识&#xff0c;从这一小节开始我们将要开始学习文件权限相关的知识&#xff0c;如何给文件修改权限&#xff0c;之前小节介绍过 ls 命令展示出来的一些文件相关的信息&#xff0c;这里面就有和文件权限相关的信息。 在 Linux 系统中&#xff0c…

Vue3学习记录(三)--- 组合式API之生命周期和模板引用

一、生命周期 1、简介 ​ 生命周期&#xff0c;指的是一个 Vue 实例从创建到销毁的完整阶段&#xff0c;强调的是一个时间段。 ​ 生命周期钩子函数&#xff0c;指的是 Vue 实例提供的内置函数&#xff0c;函数的参数为一个回调函数。这些钩子函数会在实例生命周期的某些固定…

springboot心灵治愈交流平台源码和论文

本论文主要论述了如何使用JAVA语言开发一个心灵治愈交流平台 &#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述心灵治愈交流平台的当前背景以及系统开发的目的&a…

Unity UGUI之Slider基本了解

在Unity中&#xff0c;Slider&#xff08;滑动条&#xff09;是一种常用的用户界面控件之一&#xff0c;允许用户通过拖动滑块来选择一个数值。常常应用于调节数值&#xff08;如调节音量、亮度、游戏难度等&#xff09;、设置选项等。 以下是Slider的基本信息和用法: 1、创建…
最新文章