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;
}
}