1、冒泡排序
个人理解:遇到比自己小的就顶替它冒上去(工作中遇到不如自己的上司,就替掉它)
/**
* 冒泡排序
*/
public static void bubbleSort(int[] datas) {
for (int i = 0; i < datas.length; i++) {
for (int j = i + 1; j < datas.length; j++) {
if (datas[i] > datas[j]) {
int temp = datas[i];
datas[i] = datas[j];
datas[j] = temp;
}
}
}
}
2、选择排序
个人理解:每次将没排序数组中最小的数挑选出来
/**
* 选择排序
*/
public static void selectSort(int[] datas) {
for (int i = 0; i < datas.length; i++) {
int minIndex = i;
for (int j = i + 1; j < datas.length; j++) {
if (datas[minIndex] > datas[j]) {
minIndex = j;
}
}
if (i != minIndex) {
int temp = datas[i];
datas[i] = datas[minIndex];
datas[minIndex] = temp;
}
}
}
3、插入排序
个人理解:轮询到 i 时,i 前面的数已经排好序,第 i 个待排序的数就是要在前面的数组找到自己的位置,并插入进去
/**
* 插入排序
* @param datas
* 3、2、4、1
* 2、3、4、1
* 2、3、1、4
* 2、1、3、4
* 1、2、3、4
*/
public static void insertSort(int[] datas) {
for (int i = 1; i < datas.length; i++) {
int temp = datas[i];
int j = i - 1;
while (j >= 0 && datas[j] > temp) {
datas[j + 1] = datas[j];
j--;
}
datas[j + 1] = temp;
}
}