数组的算法

数组的算法


1. 数组排序

  • 冒泡排序:通过重复遍历要排序的数组,比较相邻元素的大小,并在必要时交换它们的位置,直到整个数组排序完成。冒泡排序的时间复杂度为O(n^2),其中n是数组的长度。
  • 选择排序:在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
  • 插入排序:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序)。
  • 快速排序:通过一趟排序将待排记录分隔成独立的两部分,其中一部分的所有记录均比另一部分的所有记录小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。快速排序的平均时间复杂度为O(n log n)。
  • 归并排序:是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。归并排序的时间复杂度也是O(n log n)。

2. 数组查找

  • 线性查找:逐个检查数组中的每个元素,直到找到所需的特定元素为止。线性查找的时间复杂度为O(n)。
  • 二分查找:仅适用于有序数组。通过将数组分成两半,判断所需查找的元素是在左半部分还是右半部分,然后继续在相应的半部分中查找,直到找到所需的元素或确定元素不存在。二分查找的时间复杂度为O(log n)。

3. 数组求和、求最大值和最小值

  • 求和:遍历数组,将所有元素相加得到总和。
  • 求最大值和最小值:遍历数组,通过比较更新最大值和最小值的记录。

4. 数组反转

  • 反转数组即将数组中的元素顺序颠倒。这可以通过交换首尾对应的元素来实现,直到遍历完数组的一半。

5. 数组乱序

  • 乱序算法通常用于打乱数组元素的顺序,如Fisher-Yates洗牌算法(也称为Knuth洗牌算法),它能够在O(n)时间复杂度内将数组打乱。

6. 数组复制

  • 创建一个新数组,然后将原数组中的元素逐个复制到新数组中。

7. 数组去重

  • 遍历数组,使用一个额外的数据结构(如HashSet)来记录已经出现过的元素,从而去除重复元素。
posted @   Re-damancy^4029  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示