public class SortMethod {
public static void main(String[] args){
int len = 8;
int[] arr = new int[len];
for(int i = 0; i <len; i++ ){
// 让程序随机产生1~100个数
// Math.random()产生一个0~1
int t = (int)(Math.random() * 100);
arr[i] = t;
}
// 创建一个Bubble类对象
Bubble bubble = new Bubble();
// 获得一个实例
Calendar cal = Calendar.getInstance();
System.out.println("排序前" + cal.getTime());
bubble.bubbleSort(arr);
// 输出最后结果
for(int i = 0; i < arr.length; i++){
System.out.print(arr[i] + " ");
}
cal = Calendar.getInstance();
System.out.println("排序后" + cal.getTime());
System.out.println();
// 创建一个Select类对象
Select select = new Select();
// 获得一个实例
cal = Calendar.getInstance();
System.out.println("排序前" + cal.getTime());
select.selectSort(arr);
// 输出最后结果
for(int i = 0; i < arr.length; i++){
System.out.print(arr[i] + " ");
}
//重新获得实例
cal = Calendar.getInstance();
System.out.println("排序后" + cal.getTime());
Insert insert = new Insert();
insert.insertSort(arr);
// 输出最后结果
for(int i = 0; i < arr.length; i++){
System.out.print(arr[i] + " ");
}
}
}
class Bubble{
// 排序方法:冒泡排序
public void bubbleSort(int arr[]){
int temp = 0;
// 排序
// 外层循环,它决定一共走几趟
for(int i = 0; i < arr.length - 1; i++){
// 内存循环,开始逐个比较,如果发现前一个数
// 后一个数大,则交换位置
for(int j = 0; j < arr.length - 1 - i; j++){
if(arr[j] > arr[j + 1]){
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
}
class Select{
// 选择排序
public void selectSort(int arr[]){
int temp = 0;
for(int i = 0; i < arr.length - 1; i++){
// 设第一个数是最小的
int min = arr[i];
// 记录最小的数的下标
int minIndex = i;
for(int j = i + 1; j < arr.length; j++){
if(min > arr[j]){
// 修改最小值
min = arr[j];
minIndex = j;
}
}
// 内部for循环结束后就找到这次的最小值
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
}
class Insert{
// 插入排序方法
public void insertSort(int arr[]){
for(int i = 1; i < arr.length; i++){
int insertVal = arr[i];
int index = i - 1;
// insertVal将准备前一个数比较
while(index <= 0 && insertVal < arr[index]){
// 将arr[index]向后移动
arr[index + 1] = arr[index];
// 下标减1
index--;
}
// 将insertVal插入适当位置
arr[index + 1] = insertVal;
}
}
}