共计 1921 个字符,预计需要花费 5 分钟才能阅读完成。
排序的介绍
-
排序是将多个数据,依指定的程序进行排列的过程。
1. 排序的分类:
- 外部排序:
指将须要解决的所有数据都加载到外部存储器中进行排序。包含 (交换式排序法、抉择
式排序法和插入式排序法); -
内部排序法:
数据量过大,无奈全副加载到内存中,须要借助内部存储进行排序。包含(合并排序法和间接合并排序法)。2. 冒泡排序法
-
冒泡排序(Bubble Sorting)的根本思维是:通过看待排序序列从后向前(从下标较大的元素开始 ),顺次比拟相邻元素的值, 若发现逆序则替换,使值较大的元素逐步从前移向后部,就像水底下的气泡一样逐步向上冒。
3. 冒泡排序法案例:
BubbleSort.java
- 上面咱们举一个具体的案例来阐明冒泡法。咱们将五个无序:
24,69,80,57,13
应用冒泡排序法将其排成一个从小到大的有序数列。 -
图像剖析:
思路:
- 化繁为简,先死后活
数组 [24,69,80,57,13]
第 1 轮排序: 指标把最大数放在最初
第 1 次比拟[24,69,80,57,13]
第 2 次比拟[24,69,80,57,13]
第 3 次比拟[24,69,57,80,13]
第 4 次比拟[24,69,57,13,80]
int[] arr = {24, 69, 80, 57, 13};
int temp = 0; // 用于辅助替换的变量
for(int j = 0; j < 4; j++) {// 4 次比拟
// 如果后面的数 > 前面的数,就替换
if(arr[j] > arr[j + 1]) {temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
System.out.println("== 第 1 轮 ==");
for(int j = 0; j < arr.length; j++) {System.out.print(arr[j] + "\t");
}
/*
第 2 轮排序: 指标把第二大数放在倒数第二地位
第 1 次比拟[24,69,57,13,80]
第 2 次比拟[24,57,69,13,80]
第 3 次比拟[24,57,13,69,80]
*/
for(int j = 0; j < 3; j++) {// 3 次比拟
// 如果后面的数 > 前面的数,就替换
if(arr[j] > arr[j + 1]) {temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
System.out.println("\n== 第 2 轮 ==");
for(int j = 0; j < arr.length; j++) {System.out.print(arr[j] + "\t");
}
// 第 3 轮排序: 指标把第 3 大数放在倒数第 3 地位
// 第 1 次比拟[24,57,13,69,80]
// 第 2 次比拟[24,13,57,69,80]
for(int j = 0; j < 2; j++) {// 2 次比拟
// 如果后面的数 > 前面的数,就替换
if(arr[j] > arr[j + 1]) {temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
System.out.println("\n== 第 3 轮 ==");
for(int j = 0; j < arr.length; j++) {System.out.print(arr[j] + "\t");
}
/*
第 4 轮排序: 指标把第 4 大数放在倒数第 4 地位
第 1 次比拟[13,24,57,69,80]
*/
for(int j = 0; j < 1; j++) {// 1 次比拟
// 如果后面的数 > 前面的数,就替换
if(arr[j] > arr[j + 1]) {temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
System.out.println("\n== 第 4 轮 ==");
for(int j = 0; j < arr.length; j++) {System.out.print(arr[j] + "\t");
}
- 将多轮排序应用外层循环包含起来即可
先死后活=> 4
就是arr.length - 1
int[] arr = {24, 69, 80, 57, 13};
int temp = 0; // 用于辅助替换的变量
// 将多轮排序应用外层循环包含起来即可
// 先死后活 =》4 就是 arr.length - 1
for(int i = 0; i < arr.length - 1; i++) {// 外层循环是 4 次
for(int j = 0; j < arr.length - 1 - i; j++) {// 4 次比拟 - 3 次 - 2 次 - 1 次
// 如果后面的数 > 前面的数,就替换
if(arr[j] > arr[j + 1]) {temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
System.out.println("\n== 第"+(i+1)+"轮 ==");
for(int j = 0; j < arr.length; j++) {System.out.print(arr[j] + "\t");
}
}
正文完