学习几种简单的排序算法(选择排序、冒泡排序、插入排序)
1、选择排序的思想就是从起始索引开始遍历数组,从起始索引之后的元素中找到最小(最大)元素,并和起始索引做交换。再从起始索引下一个元素开始遍历,重复之前操作。
2、冒泡排序的核心思想就是比较和交换,从起始索引开始遍历数组,遍历到的元素依次和后面的元素做比较,如果大于就交换。
3、插入排序的核心思想就是做到局部有序,遍历元素,使遍历到的元素的前面的元素做到有序。
//打印二进制数轮子
public static void test1_1(int num){
for (int i = 31; i >= 0; i--) {
System.out.print((num & (1 << i )) == 0 ? 0 : 1);
}
}
//交换轮子
public static void swap(int[] arr ,int i ,int j){
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
//选择排序-轮子
public static void selectSort(int[] arr){
int length = arr.length;
for (int i = 0; i < length; i++) {
int minValueIndex = i;
for (int j = i+1; j < length; j++) {
minValueIndex = arr[j] < arr[minValueIndex] ? j : minValueIndex;
}
swap(arr , i,minValueIndex);
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
//冒泡排序
public static void bubbleSort(int[] arr) {
int length = arr.length;
for (int i = length-1; i >= 0; i--) {
for (int j = 0; j < i ; j++) {
if (arr[j] > arr[j+1]){
swap(arr, j,j+1);
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
//插入排序
public static void Sort(int[] arr) {
int length = arr.length;
for (int i = 1; i < length; i++) {
int newNumIndex = i;
while ( newNumIndex-1 >= 0 && arr[newNumIndex] < arr[newNumIndex-1]){
swap(arr, newNumIndex , newNumIndex-1);
newNumIndex--;
}
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}