打印给定INT类型整数的所有二进制位 思路:将所给定数字的每个二进制位与1相与。如果结果是0,代表该二进制位是0,反之该二进制位是1.
public static void printB(int num){
for (int i = 31; i >= 0; --i) {
System.out.print((num & (1 << i)) == 0 ? 0 : 1);
}
System.out.println();
}
选择排序 思路:在所给定的数组中,每次选取数组中最小(或者最大)的数放在指定位置
public static void selectionSort(int[] arr){
if(arr == null || arr.length < 2){
return;
}
for(int i = 0; i < arr.length - 1; ++i){
int minIndex = i;
for(int j = i + 1; j < arr.length; ++j){
minIndex = arr[j] < arr[minIndex] ? j : minIndex;
}
swap(arr, i, minIndex);
}
}
public static void swap(int[] arr, int i, int j){
int help = arr[i];
arr[i] = arr[j];
arr[j] = help;
}
冒泡排序 思路:在给定的数组中,将每一位依次与下一位比较,如果前一位大于后一位,那么这两个位置进行交换,反之,不交换,继续向后。一次for循环过后,该数组中最大的数被放到数组最后。我们只需考虑 (0~n-1)、(0~n-2)、。。。。。。
public static void bubbleSort(int[] arr){
if(arr == null || arr.length < 2){
return;
}
for(int e = arr.length - 1; e > 0; --e){
for(int i = 0; i < e; ++i){
if(arr[i] > arr[i + 1]){
swap(arr, i, i + 1);
}
}
}
}
public static void swap(int[] arr, int i, int j){
int help = arr[i];
arr[i] = arr[j];
arr[j] = help;
}
插入排序 思路:在给定数组中,依次考虑(0~0)、(0~1)、(0~2)、。。。。。。位置上是否有序,并将新位置上面的数插入到指定位置。(就像打牌时候码牌一样)
public static void insertionSort(int[] arr){
if(arr == null || arr.length < 2){
return;
}
for(int i = 1; i < arr.length; ++i){
for(int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; --j){
swap(arr, j, j + 1);
}
}
}
public static void swap(int[] arr, int i, int j){
int help = arr[i];
arr[i] = arr[j];
arr[j] = help;
}



