冒泡排序
思路:
- 比较相邻的元素,如果第一个比第二个大,就交换它们两个;
- 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对
- 针对所有元素重复以上步骤,除了最后一个
- 重复步骤1 ~ 3,直到排序完成
代码实现:
import java.util.Arrays;
public class BubbleSort {
public static void main(String[] args) {
int[] arr = {1, 5, 6, 2, 0, 4};
System.out.println(Arrays.toString(arr));
bubbleSort(arr);
System.out.println(Arrays.toString(arr));
}
public static void bubbleSort(int[] arr) {
for (int i = 0; i < arr.length; i++) {
boolean flag = false;
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
flag = true;
}
}
if (!flag) {
return;
}
}
}
}
💡结果
[1, 5, 6, 2, 0, 4]
[0, 1, 2, 4, 5, 6]
插入排序
思路:
- 从第一个元素开始,该元素可以认为已经被排序;
- 取出下一个元素,在已经排序的元素序列中从后向前扫描;
- 如果该元素(已排序)大于新元素,将该元素移到下一位置;
- 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
- 将新元素插入到该位置后;
- 重复步骤2 ~ 5。
代码实现:
import java.util.Arrays;
public class InsertSort {
public static void main(String[] args) {
int[] arr = {1, 5, 6, 2, 0, 4};
System.out.println(Arrays.toString(arr));
insertSort(arr);
System.out.println(Arrays.toString(arr));
}
public static void insertSort(int[] arr) {
for (int i = 1; i < arr.length; i++) {
int value = arr[i];
int j = i;
for (; j > 0 && value < arr[j - 1]; j--) {
arr[j] = arr[j - 1];
}
arr[j] = value;
}
}
}
💡结果
[1, 5, 6, 2, 0, 4]
[0, 1, 2, 4, 5, 6]
选择排序
思路:
- 首先在未排序序列中找到最小元素,存放在排序序列的起始位置;
- 再从剩余未排序元素中继续寻找最小的元素,然后放到已排序序列的末尾;
- 以此类推,直到所有元素均排序完毕。
代码实现:
import java.util.Arrays;
public class SelectSort {
public static void main(String[] args) {
int[] arr = {1, 5, 6, 2, 0, 4};
System.out.println(Arrays.toString(arr));
selectSort(arr);
System.out.println(Arrays.toString(arr));
}
public static void selectSort(int[] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = i + 1; j < arr.length; j++) {
if (arr[i] > arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
}
💡结果
[1, 5, 6, 2, 0, 4]
[0, 1, 2, 4, 5, 6]
如果本篇文章对你有帮助的话,请点个赞叭~