选择排序
通过遍历直接选出数组中最大的数,放置第一个位置,然后继续循环进行遍历,依次放置。
public static void selectSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
// i表示新数组放置元素的位置
int minIndex = i;
for (int j = i + 1; j < arr.length; j++) {
// 判断大小关系 小的值保留
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
// 如果不相等 交换值
if (i != minIndex) {
int temp = arr[i];
arr[i] = arr[minIndex];
// 返回为新数组
arr[minIndex] = temp;
}
}
}
冒泡排序
两次循环,依次对比相邻的元素,如果满足条件进行元素的交换
public void bubbleSort(Integer[] arr, int n) {
for (int i = 0; i < n; ++i) {
// 提前退出冒泡循环的标志位,即一次比较中没有交换任何元素,这个数组就已经是有序的了
boolean flag = false;
// 对比次数比元素数少依次
for (int j = 0; j < n - i - 1; ++j) { //
// 即这两个相邻的数是逆序的 执行交换
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
flag = true;
}
}
// 通过表示符判断是否已经顺序
if (!flag) break;
}
}