今天回去看了毕老师的数组视频,重新认识了下两种排序方法。基础试题有考到哦!
选择排序:
package com.joe.sortDemo;
/** * 选择排序法 * * @author joe 操作原理: 第一次:依次用角标0的数跟所有数比较 第二次:依次用角标1的数跟所有数比较 以此类推 */
public class selectSortDemo {
public static void selectSort(int[] arr) { for (int x = 0; x < arr.length - 1; x++) { // 开始角标为0的数 for (int y = x + 1; y < arr.length; y++) { // 开始角标为1的数 if (arr[x] > arr[y]) { // int temp = arr[x]; // arr[x] = arr[y]; // arr[y] = temp; swap(arr, x, y); } } } }
public static void main(String[] args) { int[] arr = { 3, 2, 5, 1, 7, 9 }; // 排序前 printArray(arr); // 排序 selectSort(arr); // 排序后 printArray(arr);
}
// 打印数组的方法 public static void printArray(int[] arr) { System.out.print("["); for (int x = 0; x < arr.length; x++) { if (x != arr.length - 1) { System.out.print(arr[x] + ","); } else { System.out.println(arr[x] + "]"); } } }
/* * 提取换位置的相同代码,单独封装成一个函数 */ public static void swap(int[] arr, int a, int b) { int temp = arr[a]; arr[a] = arr; arr = temp; } }
冒泡排序:
package com.joe.sortDemo;
/** * 冒泡排序法 * * @author joe 相邻两个元素进行比较,如果符合条件换位 */
public class bubbleSortDemo {
public static void bubbleSort(int[] arr) { for (int x = 0; x < arr.length - 1; x++) { // 控制比较的轮数 for (int y = 0; y < arr.length - x - 1; y++) { // 控制每轮比较的次数 // -x让每轮比较的次数减少,-1 // 避免角标越界 if (arr[y] > arr[y + 1]) { // int temp = arr[y]; // arr[y] = arr[y + 1]; // arr[y + 1] = temp; swap(arr, y, y + 1); } } } }
public static void main(String[] args) { int[] arr = { 3, 2, 5, 1, 7, 9 }; // 排序前 printArray(arr); // 排序 bubbleSort(arr); // 排序后 printArray(arr);
}
// 打印数组的方法 public static void printArray(int[] arr) { System.out.print("["); for (int x = 0; x < arr.length; x++) { if (x != arr.length - 1) { System.out.print(arr[x] + ","); } else { System.out.println(arr[x] + "]"); } } }
/* * 提取换位置的相同代码,单独封装成一个函数 */ public static void swap(int[] arr, int a, int b) { int temp = arr[a]; arr[a] = arr; arr = temp; } }
|