package L04;
/**
* 选择、冒泡、插入 排序
*
*/
public class Select_bubble_insert_sort_04 {
public static void main(String[] args) {
int arr[]={2,4,5,3,1};
insertionSort(arr);
}
/**
* 插入排期
* @param arr
*/
public static void insertionSort(int[] arr){
if (arr == null || arr.length < 2) {
return;
}
for (int i = 1; i < arr.length; i++) {
for (int j = i - 1; j >= 0; j--) {
// 当前位置和前一个位置比较
if (arr[j] > arr[j + 1]) {
swap(arr, j + 1, j);
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "-");
}
}
/**
* 冒泡排序
* @param arr
*/
public static void bubbleSort(int[] arr) {
if (arr == null || arr.length < 2) {
return;
}
for (int i = 0; i < arr.length - 1; i++) {
for (int j = i+1; j < arr.length; j++) {
// 每次发现比前面小的数据 交换位置
if (arr[j] < arr[i]) {
swap(arr, j, i);
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "-");
}
}
/**
* 选择排序 0-n 之间选择最小的进行交换位置
* @param arr
*/
public static void selectionSort(int[] arr) {
if (arr == null || arr.length < 2) {
return;
}
for (int i = 0; i < arr.length - 1; i++) {
// minIndex 标记最小位
int minIndex = i;
for (int j = i + 1; j < arr.length; j++) {
// 和最小的对比,选择出最小的
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
// 将最小的移到最前
swap(arr, i, minIndex);
}
for(int i=0;i<arr.length ;i++){
System.out.print(arr[i]+"-");
}
}
public static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}