首页 > 编程语言 >排序算法专题总结

排序算法专题总结

时间:2025-01-14 19:32:30浏览次数:1  
标签:专题 数列 基准 元素 算法 数组 排序

分治基础-二分查找:
二分查找是一种高效的查找算法

先找到数组的中间位置mid,判断
(1)如果要找的数x==a[mid]找到了,mid就是位置
(2)如果要找的教x>a[mid],说明要找的数在后一半,递归在后一半找
(3)如果要找的数x<a[mid],说明要找的数在前一半,递归在前一半找在下标为left~right之间的范围内找数,mid=(left+right)/2当left<=right就一直找,直到找到了,或者left>right(找不到)
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————快速排序:
快速排序是一种高效的排序算法,其基本思想是通过选择一个基准元素,将数组划分为两个子数组,一个包含所有小于基准元素的元素,另一个包含所有大于基准元素的元素,然后递归地对这两个子数组进行快速排序‌。‌

快速排序的基本步骤
1‌.选择基准元素‌:通常选择数组的第一个元素作为基准元素,但也可以随机选择或使用“三数取中法”来避免最坏情况。
‌2.分区操作‌:将数组中的元素根据与基准元素的比较结果进行重新排列,小于基准元素的放在左边,大于基准元素的放在右边。
‌3.递归排序‌:对基准元素左右两边的子数组进行递归排序。
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
他的优点‌有:
‌1.时间复杂度低‌:平均时间复杂度为O(nlogn),比其他排序算法如冒泡排序、选择排序和插入排序更快。‌
2‌.原地排序‌:不需要额外的存储空间,只需通过交换数组中的元素来实现排序。
3‌.分治思想‌:采用分治策略,将问题分解为子问题,简化问题复杂度。
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
‌冒泡排序:
冒泡排序是一种简单的排序算法,其基本思想是通过重复遍历待排序的数列,比较每对相邻元素并在必要时交换它们的位置,直到整个数列有序。它是通过重复走访数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复进行的,直到没有再需要交换的元素为止,这时数列就排序完成了。

步骤:
1.从左到右遍历数列,比较相邻的两个元素。
2.如果第一个元素比第二个元素大,则交换它们的位置。
3.对每一对相邻元素做同样的工作,直到最后一对。
·重复步骤1~3,直到整个数列有序。
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
‌插入排序‌是一种简单直观的排序算法,其基本思想是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。也是一种稳定的算法。

步骤:
插入排序将数组分为已排序区间和未排序区间。初始时,已排序区间只包含数组的第一个元素,未排序区间包含除第一个元素之外的所有元素。然后,从未排序区间取出第一个元素,将它插入到已排序区间的合适位置,使得已排序区间仍然保持有序。这个过程重复进行,直到未排序区间中的所有元素都被插入到已排序区间中,即整个数组排序完成。
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
‌桶排序是一种分块排序算法,其核心思想是将一个数组分到有限数量的桶里,每个桶再分别进行排序

步骤:
1‌.初始化桶‌:根据待排序数组的取值范围,初始化有限数量的桶。
‌2.分配元素到桶中‌:遍历待排序数组,根据元素的大小确定每个元素所属桶的位置,并将其放入相应的桶中。
‌3.对每个桶中的数字进行排序‌:可以使用其他排序算法,如插入排序、快速排序等,对每个桶中的数字进行排序。
‌4.合并所有桶中的数字‌:按顺序将所有桶中的数字合并,得到最终有序数组。‌

标签:专题,数列,基准,元素,算法,数组,排序
From: https://www.cnblogs.com/chenboyan-123/p/18671438

相关文章

  • 【一看就会】路径规划算法【一】——广度优先,深度优先,Dijkstra、A*、D*
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、输入输出1.输入环境约束条件目标其他2.输出二、广度优先搜索——BFS三、深度优先搜索——DFS四、Dijkstra五、A*六、D*1.初始路径规划(环境未变化)2.环境变化3.动态调整1.受影响节点标记2......
  • 算法-高精度问题(带图详细解读~)
    今天来分享四道大数运算的模板题.目录1.大数相加2.大数相减3.大数相乘4.大数相除1.大数相加题目链接:LINK基本思路:存入数组,模拟运算.逆序字符串补零操作依次取数据,依次相加3-1加:(t-ret=s1[i]+s2[i]+carry)%10;3-2进:(t-ret=s1[i]+......
  • 「Note」欧几里得算法全家桶
    一,欧几里得算法1.内容\(\gcd(a,b)=\gcd(b,a\modb)\)2.证明先假设\(a>b\),\(a=bx+y\),其中\(x=\lfloor\frac{a}{b}\rfloor,0\ley\ltb\)。也就是\(b\)除以\(a\)等于\(x\)余\(y\)。原命题就是\(\gcd(a,b)=\gcd(y,b)\)。由\(a=bx......
  • 【轻松掌握数据结构与算法】哈希(Hashing)
    什么是哈希?哈希是一种将任意长度的数据转换为固定长度的数据的技术。这个固定长度的数据通常被称为哈希值或哈希码。哈希函数是实现这一转换的关键,它接受任意长度的输入,并产生一个固定长度的输出。为什么使用哈希?哈希的主要用途之一是快速查找数据。通过哈希函数,我们可以将......
  • 省选构造专题
    省选构造专题Thesamepermutation首先打个表,发现在\(1\len\le5\)之内的是否有合法方案的情况为√××√√大了打不出来了。考虑一下\(4,5\)连续有解,注意到一个偶数有解,则这个偶数\(+1\)也必定有解。考虑以下构造方法即对于某一个交换,可以在它前后各添加一个右端......
  • 使用VoyageAI进行高效文本嵌入与重新排序
    在自然语言处理(NLP)任务中,文本嵌入和重新排序是两项关键技术。VoyageAI提供了针对特定领域和公司的定制化嵌入模型,以提高检索质量。本文将详细讲解如何使用VoyageAI进行文本嵌入和重新排序。技术背景介绍文本嵌入是一种将文本转换为数值向量的方法,使其能够在机器学习模型......
  • 迭代重建算法
    迭代重建算法是图像重建领域中的一种重要方法,尤其在计算机断层扫描(CT)成像中得到了广泛应用。以下是对迭代重建算法的详细介绍:一、基本原理迭代重建算法的基本思想是由测量的投影数据建立一组未知向量的代数方程式,通过方程组求解未知图像向量。具体来说,该算法首先设置一组模拟图......
  • AcWing算法周赛第6场 | 3735 构造完全图
    学习C++从娃娃抓起!记录下AcWing备赛学习过程中的题目,记录每一个瞬间。附上汇总贴:AcWing算法周赛|汇总【题目描述】给定一个由nnn个点和......
  • AcWing算法周赛第6场 | 3734 求和
    学习C++从娃娃抓起!记录下AcWing备赛学习过程中的题目,记录每一个瞬间。附上汇总贴:AcWing算法周赛|汇总【题目描述】用f(x)......
  • 堆结构与堆排序
    测试链接:https://leetcode.cn/problems/sort-an-array/堆结构:是一颗完全二叉树分为大根堆和小根堆大根堆:每一颗子树最大值都在子树的根部小根堆:每一颗子树最小值都在子树的根部每一位父亲i的两个孩子的节点位置(若存在)分别为:i*2+1,i*2+2同理每一个孩子的父亲节点位置为:(i-1)......