智渔课堂官方免费教程二十八:Java排序算法之选择排序和冒泡排序

时间:2021-04-09 19:27:04

选择排序

步骤一、选取一组数据中起始位置(下标)上的数据,和其后的各个位置(下标)上数据进行比较;如果起始位置(下标)上的数据大(升序)或小(降序),就将两个位置上的数据进行交换;这样完成一轮比较之后,起始位置上的数据就是最小或最大了
步骤二、再次选取第二个位置上的数据,和其后各个位置上的数据进行比较。如此重复,就可将数据进行排序了。
实例:package algorithm.sort;
/**
* 演示选择排序算法
* @author 学霸联盟 - 赵灿
*/
public class SelectionSortDemo {
public static void main(String[] args) {
//创建两个数组
int[] arr1 = { 3, 5, 1, 4, 2 };
/*
* 选择排序
* 顾名思义,从数组中按照顺序一个一个的选出来
* 升序排序:
* 第一步取出数组中下标为0的值,和后面每个值比较
* 如果小标为0值大于后面的值,则互换两个值,继续和后面的比
* 比完之后就可以保证下标为0的位置保持最小的值了
* 在取下标为1的值和后面的值一个一个比较,以此类推
*/
for (int i = 0; i < arr1.length - 1; i++) {
//取到倒数第二个值即可,最后一个后面没有其他值了,也就无需比较了
/*
* 内层循环拿后面的每一个值和外层循环取到的值比较
* 所以外层循环取下标为0处的值,这里第一次应该拿下标为1位置的值
* 外层循环取下标为1处的值,这里第一次应该拿下标为2位置的值
* 以此类推,得到j初始化时应该等于i+1
*/
for (int j = i+1; j < arr1.length; j++) {
//判断大小
if(arr1[i] > arr1[j]){
//注意:这里交换的是数组中的值
int temp = arr1[i];
arr1[i] = arr1[j];
arr1[j] = temp;
}
}
}
System.out.println("--- 选择排序法排序后 ---");
for (int i = 0; i < arr1.length; i++) {
System.out.print(arr1[i] + " ");
}
}
}
运行结果:
--- 选择排序法排序后 ---
1 2 3 4 5

冒泡排序

步骤一:选取一组数据中起始位置(下标)上的数据,和第二个位置上的数据进行比较,如果起始位置(下标)上的数据大(升序)或小(降序),就将两个位置上的数据进行交换;然后使用第二个位置上的数据,和第三个位置上的数据进行比较;第三个和第四个...直至最后一个,这样完成一轮比较,就使最后一个位置上的数据最大或最小
步骤二:仍然是选取起始位置上的数据,和第二个位置上的数据进行比较,直至倒数第二个数据;
以此类推,直至只剩下第一个和第二个数据进行比较,比较完成后结束。
实例:package algorithm.sort;
/**
* 演示冒泡排序算法
* @author 学霸联盟 - 赵灿
*/
public class BubbleSortDemo {
public static void main(String[] args) {
//创建两个数组
int[] arr1 = { 3, 5, 1, 4, 2 };
/*
* 冒泡排序
* 顾名思义,像冒泡一样,越往上越大
* 升序排序:
* 第一步取出数组中下标为0的值,和后面相邻的值比较
* 如果后面的值小,交换两个值(相当于向上冒一个位置)
* 交换后继续用这个大的值和后面的值进行比较
* 以此类推,第一遍比较完成后,最大的值就在最后一个下标位置了
*/
for (int i = arr1.length - 1; i > 0 ; i--) {
//外层循环的作用是标识冒泡的结束位置,结束位置是依次向前移动的
/*
* 每次都从第一个值开始往上冒泡
* 知道冒至外层循环标识的结束位置为止
*/
for (int j = 0; j < arr1.length - 1; j++) {
//判断相邻两个值大小
if(arr1[j] > arr1[j + 1]){
//注意:这里交换的是数组中的值
int temp = arr1[j];
arr1[j] = arr1[j + 1];
arr1[j + 1] = temp;
}
}
}
System.out.println("--- 冒泡排序法排序后 ---");
for (int i = 0; i < arr1.length; i++) {
System.out.print(arr1[i] + " ");
}
}
}
运行结果:
--- 冒泡排序法排序后 ---
1 2 3 4 5
排序算法有很多很多,对于初学者,至少至少也要理解和熟练应用其中一种。