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;
    }
}
上一篇:保研考研机试攻略:python笔记(3)