一维数组的 冒泡排序 选择排序 插入排序 Arrays内置排序
package arithmetic;
import java.util.Arrays;
/**
* 一维数组的排序
* 冒泡排序
* 选择排序
* 插入排序
* Arrays类内置方法排序
*
* @author sunRainAmazing
*
*/
public class OneArraySort {
public static void main(String[] args) {
int[] arr={12,3,45,24,58,14,8};
printArray(arr);
Arrays.sort(arr);// Arrays类的sort方法
printArray(arr);
// printArray(bubbleSort(arr));//冒泡排序
// printArray(selectSort(arr));//冒泡排序
// bubbleSort(arr);
// selectSort(arr);//选择排序
// select1Sort(arr);//选择排序
// insertSort(arr);//选择排序
//
// printArray(arr);
}
/**
* 判断数组长度是否小于2
* @param arr 数组
* @return 是 返回 true,否 返回false
*/
private static boolean backArray(int[] arr){
if(arr.length<2){
return true;
}
return false;
}
/**
* 输出 数组
* @param array
*/
private static void printArray(int []array){
for (int i : array) {
System.out.print(i+"\t");
}
System.out.println();
}
/**
* 交换数组的位置
*/
private static void swap(int[] arr, int i, int j) {
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
/**
* 进行冒泡排序
* @param arr 排序的数组
* @return
*/
public static int[] bubbleSort(int[] arr){
//1、判断数组的长度
if(backArray(arr)){
return arr;
}
//2、进行冒泡排序
for (int i = 0; i < arr.length-1; i++) {
for (int j = 1; j < arr.length-i; j++) {
if( arr[j] < arr[j-1]){
//3、交换位置
swap(arr,j-1,j);
// int temp=arr[j];
// arr[j]=arr[j-1];
// arr[j-1]=temp;
}
}
}
return arr;
}
/**
* 选择排序 寻找下标
* @param array
* @return
*/
public static int[] selectSort(int[] array) {
if (array.length <= 1) {
return array;
}
// for (int i = 1; i < array.length; i++) {
// int index = 0;// 默认最大值下标
// for (int j = 1; j < array.length - i + 1; j++) {
// if (array[j] > array[index]) {
// index = j;
// }
// }
// swap(array, array.length - i, index);
// }
for (int i = 1; i < array.length; i++) {
int maxIndex = 0;
for (int j = 1; j <= array.length - i; j++)
if (array[j] > array[maxIndex])
maxIndex = j;
int temp = array[array.length - i];
array[array.length - i] = array[maxIndex];
array[maxIndex] = temp;
}
return array;
}
/**
* 选择排序
* @param arr
*/
public static void select1Sort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
// 找最小值 的位置
int minIndex = i;
for (int j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
// 与当前考察位置 数 交换
swap(arr, minIndex, i);
}
}
/**
* 插入排序
* @param arr
*/
public static void insertSort(int [] arr){
// for (int i = 1; i < arr.length; i++) {
// for (int j = i; j > 0; j--)
// if (arr[j] < arr[j - 1])
// swap(arr, j, j - 1);
// }
for (int i = 1; i < arr.length; i++) {
for (int j = i; j > 0; j--) {
if (arr[j] < arr[j-1]) {// 进行交换
int temp = arr[j-1];
arr[j-1] = arr[j];
arr[j] = temp;
} else {
break;
}
}
}
}
}