当前位置: 首页 > article >正文

Java进阶嵌套循环:十.冒泡与选择算法排序

1.定义

嵌套循环指的是在一个循环体内包含另一个循环的结构。这种结构能够实现更加复杂的逻辑,特别是在处理多维数组或者需要进行多层次迭代的情况下

2.示例

每跑一圈 做十个俯卧撑,一共跑十圈

for (int a = 0; a < 10; a++) {
    System.out.println("\n正在跑圈");
    for (int b = 0; b < 10; b++) {
        System.out.print("\t俯卧撑");
    }
}

3.使用嵌套循环实现排序

冒泡排序

int[] arr = {18, 14, 30, 79, 7, 68, 30, 59, 64, 75};
for (int i = 0; i < arr.length - 1; i++) {
    for (int j = 0; j < arr.length - 1 - i; j++) {
        int a = arr[j];
        int b = arr[j + 1];
        if (a > b) {
            arr[j] = b;
            arr[j + 1] = a;
            f = false;
        }
    }
}

优化的冒泡排序

int[] arr = {18, 14, 30, 79, 7, 68, 30, 59, 64, 75};
for (int i = 0; i < arr.length - 1; i++) {
    boolean f = true;
    for (int j = 0; j < arr.length - 1 - i; j++) {
        int a = arr[j];
        int b = arr[j + 1];
        if (a > b) {
            arr[j] = b;
            arr[j + 1] = a;
            f = false;
        }
    }
    if (f) {
        break;
    }
}

选择排序

  • 外层循环:遍历数组的所有元素(除了最后一个元素)。

  • 内层循环:从当前索引 i 开始,遍历数组剩余的部分,寻找最小值的索引。

  • 交换操作:如果找到了比当前位置 i 更小的值,则记录该索引 x。在外层循环结束后,如果 x 不等于 i,则说明找到了一个更小的值,此时进行交换。

int[] arr = {18, 14, 30, 79, 7, 68, 30, 59, 64, 75};

for (int i = 0; i < arr.length - 1; i++) {
    int x = i;
    for (int j = i + 1; j < arr.length; j++) {
        if (arr[x] > arr[j]) {
            x = j;
        }
    }
    if (x != i) {
        int temp = arr[i];
        arr[i] = arr[x];
        arr[x] = temp;
    }
}

http://www.kler.cn/a/388353.html

相关文章:

  • 【juc】AbstractQueuedSynchronized为什么采用双向链表
  • 基于MATLAB+opencv人脸疲劳检测
  • 生成模型——PixelRNN与PixelCNN
  • Qt初识简单使用Qt
  • vue elementui el-dropdown-item设置@click无效的解决方案
  • Pandas | 数据分析时将特定列转换为数字类型 float64 或 int64的方法
  • 命令行工具PowerShell使用体验
  • 【C++】STL中的list容器详解及常用函数用法
  • UOS启动器
  • CI/CD 实践总结
  • HTB:Explore[WriteUP]
  • [Android]查找java类中声明为native方法的具体实现方法
  • 「QT」几何数据类 之 QPolygon 多边形类
  • 增删改查基础项目总结
  • 智能机器人技术:AI 如何赋予机器智能行动
  • 如何使用 Puppeteer 和 Browserless 抓取亚马逊产品数据?
  • 【SQL实验】更新操作
  • 量子计算及其在密码学中的应用
  • Element UI组件Dialog显示闪动问题【解决方案】
  • The First项目报告:MANTRA如何实现世界金融区块链化?
  • 统信UOS开发环境支持Perl
  • 力扣第46题“全排列”
  • 计算机视觉系列----深入浅出了解计算机视觉
  • Leetcode:540. 有序数组中的单一元素
  • Kafka面试题 part-1
  • Unet++改进16:添加DoubleAttention||减少冗余计算和同时存储访问