首先定义一个基类:
public interface MySort {
public int[] sort(int[] arr);
}
1.冒泡排序:
public class Bubblu implements MySort {
@Override
public int[] sort(int[] arr) {
// 数组遍历
for (int i = 0; i < arr.length - 1; i++) {
// 定义一个标记
boolean flag = true;
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;
// 把标签置为false
flag = false;
}
}
// 如果flag 为 true 则退出循环
if (flag) {
break;
}
}
return arr;
}
}
2.选择排序:
public class SelectSort implements MySort {
@Override
public int[] sort(int[] arr) {
// 数组遍历
for (int i = 0; i < arr.length; i++) {
// 设定一个数组脚标标签
int index = i;
for (int j = i + 1; j < arr.length; j++) {
// 如果标签数大于后面数组,则交换数组脚标
if (arr[index] > arr[j]) {
index = j;
}
}
// 如果脚标不等于原先设定的,则交换原先数和脚标数
if (index != i) {
int temp = arr[index];
arr[index] = arr[i];
arr[i] = temp;
}
}
// 返回 arr
return arr;
}
}
3.插入排序
public class InsertSort implements MySort {
@Override
public int[] sort(int[] arr) {
int j = 0;
// 定义一个中间变量
int key = 0;
for (int i = 1; i < arr.length; i++) {
// 如果后一个数小于前一个数,则把后一个数拿出来
if (arr[i] < arr[i - 1]) {
key = arr[i];
// j赋值为前一个数组的下标
j = i - 1;
// 如果满足条件,则把前一个数赋给后一个数
while (j >= 0 && key < arr[j]) {
arr[j + 1] = arr[j];
// 将 j的值减一
j--;
}
// 将得到的小的数插入到j后面
arr[j + 1] = key;
}
}
return null;
}
}