选择排序
步骤一、选取一组数据中起始位置(下标)上的数据,和其后的各个位置(下标)上数据进行比较;如果起始位置(下标)上的数据大(升序)或小(降序),就将两个位置上的数据进行交换;这样完成一轮比较之后,起始位置上的数据就是最小或最大了
步骤二、再次选取第二个位置上的数据,和其后各个位置上的数据进行比较。如此重复,就可将数据进行排序了。
实例: 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
排序算法有很多很多,对于初学者,至少至少也要理解和熟练应用其中一种。
时间: 2024-10-26 04:43:44