JavaSE-数组的算法

数组的算法

在Java中,数组是一种基本的数据结构,常用于实现各种算法。以下是一些常见的与数组相关的算法:

  1. 排序算法:

    • 冒泡排序(Bubble Sort)
    • 选择排序(Selection Sort)
    • 插入排序(Insertion Sort)
    • 快速排序(Quick Sort)
    • 归并排序(Merge Sort)
    • 堆排序(Heap Sort)
  2. 搜索算法:

    • 线性搜索(Linear Search)
    • 二分搜索(Binary Search)- 需要数组是有序的
  3. 数学算法:

    • 找到最大/最小元素
    • 求和、平均数
    • 标准差、方差等统计计算
  4. 动态编程算法:

    • 矩阵链乘问题
    • 背包问题
    • 最长公共子序列
  5. 字符串处理算法:

    • 字符串匹配算法(如KMP算法)
    • 排序字符串数组
  6. 数组变换算法:

    • 反转数组
    • 旋转数组
    • 数组元素的循环移位
  7. 查找重复元素:

    • 使用哈希表或排序后查找
  8. 集合操作:

    • 并集、交集、差集
  9. 图算法中的数组应用:

    • 邻接矩阵表示图
    • 深度优先搜索(DFS)和广度优先搜索(BFS)中的访问标记数组
  10. 特殊问题算法:

    • 荷兰国旗问题(对数组进行三向切分)
    • 找出数组中的第k大(小)元素

示例:冒泡排序

以下是一个简单的冒泡排序算法的Java实现:

复制代码
void bubbleSort(int[] arr) {
int n = arr.length;
//两个for循环,外层循环用来遍历数组'i-1',内层循环用来将已经排好序的变量减去'j-i-1'
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// 交换 arr[j] 和 arr[j + 1]
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}

示例:二分搜索

二分搜索要求数组是预先排序的:

复制代码
int binarySearch(int[] arr, int x) {
int l = 0, r = arr.length - 1;
while (l <= r) {
int m = l + (r - l) / 2;
// 检查x是否位于中点
if (arr[m] == x) {
return m;
}
// 如果x大于中点元素,则在右侧查找
if (arr[m] < x) {
l = m + 1;
}
// 如果x小于中点元素,则在左侧查找
else {
r = m - 1;
}
}
return -1; // x不存在于数组中
}

数组算法是计算机科学和编程中的核心内容,掌握这些算法对于解决各种编程问题至关重要。Java标准库也提供了一些内置的数组操作,例如 Arrays.sort()Arrays.binarySearch(),它们在很多情况下可以简化编程任务。

本文作者:柒寒-不聪明的人

本文链接:https://www.cnblogs.com/wjw2003512/p/18343969

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   柒寒(平安)  阅读(12)  评论(0编辑  收藏  举报

哥伦布

-1°

  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起