新手课1-简单排序
/** * @author wangbiao * @create 2021/1/29 */ public class Demo1 { public static void main(String[] args) { // 32 位 int i = 5; // // 10 进制 转 2 进制 print(i); // 00000000000000000000000000000101 print(~i); // 取反 11111111111111111111111111111010 // 带符号右移 >>> // 不带符号右移 >> print(i >> 1); // 00000000000000000000000000000010 // 得到负数:二进制运算是取反 +1 int j = -i; int k = (~i) + 1; System.out.println(j); // -5 System.out.println(k); // -5 int[] arr = {4, 3, 6, 7, 3, 2, 6, 1, 9, 7}; // System.out.println("=============选择排序==============="); // printArray(arr); // selectSort(arr); // 选择排序 // printArray(arr); // 冒泡排序 // System.out.println("===============冒泡排序=================="); // printArray(arr); // bubbleSort(arr); // 冒泡排序 // printArray(arr); // 插入排序 System.out.println("===============插入排序=================="); printArray(arr); // insertSort1(arr); // 写法1 insertSort2(arr); // 写法2 printArray(arr); } public static void insertSort2(int[] arr) { if (arr == null || arr.length < 2) { return; } int N = arr.length; for (int end = 0; end < N; end++) { for (int pre = end - 1; pre >= 0 && arr[pre] > arr[pre + 1]; pre--) { swap(arr, pre, pre + 1); } } } public static void insertSort1(int[] arr) { if (arr == null || arr.length < 2) { return; } int N = arr.length; for (int end = 0; end < N; end++) { int newNumIndex = end; while (newNumIndex - 1 >= 0 && (arr[newNumIndex - 1] > arr[newNumIndex])) { swap(arr, newNumIndex - 1, newNumIndex); newNumIndex--; } } } public static void bubbleSort(int[] arr) { if (arr == null || arr.length < 2) { return; } int N = arr.length; for (int end = N - 1; end >= 0; end--) { for (int second = 1; second <= end; second++) { if (arr[second - 1] > arr[second]) { swap(arr, second - 1, second); } } } } public static void selectSort(int[] arr) { // 先判断边界条件:如果数组为空,或者只有一个数 if (arr == null || arr.length < 2) { return; } // 逻辑 int N = arr.length; for (int i = 0; i < N; i++) { int minValueIndex = i; for (int j = i + 1; j < N; j++) { minValueIndex = arr[j] < arr[minValueIndex] ? j : minValueIndex; } // 找到最小数的位置,进行交换 swap(arr, i, minValueIndex); } } // 交换行为方法 public static void swap(int[] arr, int i, int j) { int tmp = arr[j]; arr[j] = arr[i]; arr[i] = tmp; } public static void p(int[] arr){ for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + ","); } } public static void printArray(int[] arr) { for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } System.out.println(); } public static void print(int num) { for (int i = 31; i >= 0; i--) { /* & 与 | 或 ^ 异或 */ System.out.print((num & (1 << i)) == 0 ? "0" : "1"); } System.out.println(); } }
《三体》中有句话——弱小和无知不是生存的障碍,傲慢才是。
所以我们不要做一个小青蛙