note
大约 1 分钟
冒泡排序
冒泡v1
public class Bubble {
public static void main(String[] args) {
int[] arr = { 1, 3, 4, 2, 8, 4, 5, 1, 9, 10 };
bubble_v2(arr);
System.out.println(JSON.toJSONString(arr));
}
public static void bubble(int[] arr) {
for (int j = 0; j < arr.length - 1; j++) {
boolean swap = false;
for (int i = 0; i < arr.length - 1 - j; i++) {
if (arr[i] > arr[i + 1]) {
int temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
swap = true;
}
}
if (!swap)
break;
}
}
}
冒泡v2
public class Bubble {
public static void main(String[] args) {
int[] arr = { 1, 3, 4, 2, 8, 4, 5, 1, 9, 10 };
bubble_v2(arr);
System.out.println(JSON.toJSONString(arr));
}
public static void bubble_v2(int[] arr) {
int last = arr.length - 1, n;
// 每次记录循环的最后一次位置
while ((n = last) != 0) {
last = 0;
for (int i = 0; i < n; i++) {
if (arr[i] > arr[i + 1]) {
int temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
last = i;
}
}
}
}
}
选择排序
public class Choose {
public static void main(String[] args) {
int[] arr = { 1, 2, 8, 3, 2, 5, 4, 7, 4 };
choose(arr);
System.out.println(JSON.toJSONString(arr));
}
private static void choose(int[] arr) {
// i代表美伦选择最小元素要交换到的位置索引
for (int i = 0; i < arr.length - 1; i++) {
int min = i;// min代表最小元素的位置索引
for (int j = min + 1; j < arr.length; j++) {
if (arr[j] < arr[min]) {
min = j;// 每次选择最多只交换一次位置
}
}
if (min != i) {
int temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}
}
}
}
插入排序
public class Insert {
public static void main(String[] args) {
int[] arr = { 1, 2, 8, 3, 2, 5, 4, 7, 4 };
insert(arr);
System.out.println(JSON.toJSONString(arr));
}
private static void insert(int[] arr) {
for (int i = 1; i < arr.length; i++) {
int temp = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > temp) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = temp;
}
}
}