几种觉排序优劣

news/2024/11/29 12:50:37/

冒泡排序

比较相邻的元素。如果第一个比第二个大,就交换他们两个。 

对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 

针对所有的元素重复以上的步骤,除了最后一个。

持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

插入排序

首先,我们将数组中的数据分为2个区间,即已排序区间和未排序区间。初始已排序区间只有一个元素,就是数组的第一个元素。插入算法的核心思想就是取未排序区间中的元素,在已排序区间中找到合适的插入位置将其插入,并保证已排序区间中的元素一直有序。重复这个过程,直到未排序中元素为空,算法结束。

选择排序

第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。

快速排序是冒泡排序的升级版

数列中挑出一个元素,称为 "基准"(pivot);

重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;

递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序;

递归排序

先把数组从中间分成前后两部分,然后对前后两部分分别进行排序,再将排序好的两部分合并到一起,这样整个数组就有序了。这就是归并排序的核心思想。

桶排序

1.算法原理:

1)将要排序的数据分到几个有序的桶里,每个桶里的数据再单独进行快速排序。

2)桶内排完序之后,再把每个桶里的数据按照顺序依次取出,组成的序列就是有序的了。

计数排序(Counting sort)

1.算法原理

1)计数其实就是桶排序的一种特殊情况。

2)当要排序的n个数据所处范围并不大时,比如最大值为k,则分成k个桶

3)每个桶内的数据值都是相同的,就省掉了桶内排序的时间。

基数排序

基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。

 


http://www.ppmy.cn/news/19255.html

相关文章

Tkinter的Listbox控件

Tkinter的Listbox控件是个选项框,主要是用来在给定的选项中选择一个 使用方法 创建选项框Listbox 和其他控件的创建方法一样,直接创建即可,命名为Lb Lbtk.Listbox(root) Lb.pack() 在选项框中加入选项 可以边创建边添加,即利…

一些数字分组的计算结果,也许对你的二码运算有用

把2N个数分成N份,每份2个号码,应该共有combin(2N,N)种, 但这有一个问题,生成的二码重复太多,对于观测二码很不方便。 能不能让生成的组数中二码只出现一次,也就是最小覆盖? 经过努力我把以下三种…

Python---文件操作

专栏:python 个人主页:HaiFan. 专栏简介:本专栏主要更新一些python的基础知识,也会实现一些小游戏和通讯录,学时管理系统之类的,有兴趣的朋友可以关注一下。 文件操作思维导图前言文件是什么文件路径文件操…

【C#】WPF实现经典纸牌游戏,适合新手入门

文章目录1 纸牌类2 布局3 初始化4 事件点击牌堆拖动牌的去留源代码1 纸牌类 之所以产生这个无聊至极的念头,是因为发现Unicode中竟然有这种字符。。。 黑桃🂡 🂢 🂣 🂤 🂥 🂦 🂧 &…

常见递归模式

常见递归模式递归模式遍历二叉树模式回溯模式子问题分解模式递归模式 常见递归模式: 遍历二叉树模式回溯模式子问题分解模式 遍历二叉树模式 只要涉及递归的问题,都是树的问题,或者说树的遍历。 void traverse(TreeNode root) { // 遍历…

【MySQL基础】MySQL多表操作详解

序号系列文章4【MySQL基础】MySQL表的七大约束5【MySQL基础】字符集与校对集详解6【MySQL基础】MySQL单表操作详解7【MySQL基础】运算符及相关函数详解文章目录前言1,多表关系1.1,一对一1.2,一对多1.3,多对多2,多表查询…

Keil C51工程转VSCode Keil Assistant开发全过程

Keil C51工程转VSCode Keil Assistant开发全过程✨这里以stc15W408AS为例。📌相关篇《【开源分享】自制STC15W408AS开发板》 📺编译-烧录演示: 📋转VSCODE开发环境主要原因可能代码提示以及代码跳转功能,或者其他。 &…

Python(for和while)循环嵌套及用法

Python 不仅支持 if 语句相互嵌套,while 和 for 循环结构也支持嵌套。所谓嵌套(Nest),就是一条语句里面还有另一条语句,例如 for 里面还有 for,while 里面还有 while,甚至 while 中有 for 或者 …