- 冒泡排序
/**
* 冒泡排序
* 原理:从前往后,依次比较相邻两个数大小,如果arr[i]大于arr[i+1],则交换他们的位置
* 即将比较大的数往后放,小的数往前走
*/
private static void bubbleSort(int[] arr) {
// 临时变量
int temp;
// 数组长度
int len = arr.length;
// 数据交换标记:循环开始时置为true
// 如果有数据交换(有排序行为),则置为false
// 如果无数据交换(无排序行为),说明当前数组已经是有序的,则跳出循环
Boolean flag;
for (int i = 0; i < len - 1; i++) {
flag = true;
for (int j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
// 交换前后位置
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
// 数据交换标记
flag = false;
}
}
// 没有发生交换(表示已经是有序的了)则退出循环;
if (flag) {
break;
}
}
}
- 插入排序
/**
* 插入排序
* 原理:在保证arr[i]前面的元素都是有序的前提下,将temp = arr[i]依次与前面的元素比较大小
* 如果arr[i-1]大于temp则将arr[i-1]后移一位,直到arr[i-n]不大于temp为止
* 然后将temp插入到(i-n+1)这个为止
*/
private static void insertSort(int[] arr) {
int i, j, temp;
int len = arr.length;
// 从arr[1]开始
for (i = 1; i < len;