package com.cowain.day1;
/**
* @Author: fxw
* @Date: 2022/2/24 19:04
*/
public class ArraySort {
public static void main(String[] args) {
int[] array = {5, 7, 9, 10, 3, 2, 8, 1};
System.out.print("选择排序:");
SelectionSort(array);
System.out.println();
System.out.print("冒泡排序:");
bubbleSort(array);
System.out.println();
System.out.print("插入排序:");
insertSort(array);
}
/**
* 选择排序
*
* @param array 无序数组
*/
public static void SelectionSort(int[] array) {
if (array == null || array.length < 2) {
// 判断array数组是否为空 如果为空就直接返回 或则数组的长度是否小于2
//小于2的话就说明数组只有一个数值 则不需要判断
return;
}
for (int i = 0; i < array.length; i++) { //循环数组的长度
int minValueIndex = i;//认为默认最小index的值就是0
for (int j = i + 1; j < array.length; j++) { //从索引为i+1后面的元素进行筛选比较
//如果array[i+1]>array[minvalue] 则 minvalue=minvalue 反之minvalue=i+1
minValueIndex = array[j] > array[minValueIndex] ? minValueIndex : j;
}
//进行换位处置
swap(array, i, minValueIndex);
}
printArray(array);
}
/**
* 冒泡排序
*
* @param array 无序数组
*/
public static void bubbleSort(int[] array) {
if (array == null || array.length < 2) {
// 判断array数组是否为空 如果为空就直接返回 或则数组的长度是否小于2
//小于2的话就说明数组只有一个数值 则不需要判断
return;
}
for (int i = 0; i <array.length ; i++) {//循环数组的长度
for (int j = i+1; j <array.length ; j++) { //以数组的第一个元素和array[array.length-1]去做比较
if (array[i]>array[j]){ //如果array[i]大于array[i+1]的值 注意 外圈循环一次 内圈需要循环array.length-(i+1)次数
swap(array, i, j);
}
}
}
printArray(array);
}
/**
* 插入排序
* @param array 无序数组
*/
public static void insertSort(int [] array){
if (array == null || array.length < 2) {
// 判断array数组是否为空 如果为空就直接返回 或则数组的长度是否小于2
//小于2的话就说明数组只有一个数值 则不需要判断
return;
}
// 索引 0-0 OK
//索引 0-1 需要比较 1和 0 说明只需要从1开始去比
//索引0-2 需要比较 2 1 0
//索引 0-array.length
for (int i = 1; i <array.length ; i++) {
for (int j = i-1; j >=0&&array[j]>array[j+1] ; j--) { //换位处理
swap(array,j,j+1);
}
}
printArray(array);
}
//打印数组
public static void printArray(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
System.out.println();
}
//换位
public static void swap(int[] array, int firstNum, int secondNum) {
int temp = array[firstNum];
array[firstNum] = array[secondNum];
array[secondNum] = temp;
}
}