java的三种数组排序方式
排序的实现
package com.yu.sort;
public class SortUtils {
/**
* 冒泡排序
* @param arr
*/
public static void bubbleSort(int[] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = arr.length-1; j > i; j--) {
if (arr[j] < arr[j-1]) {
int temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
}
}
}
}
/**
* 选择排序
* 特定的元素和后面的元素选择进行比较
* 若比后面的大 则交换
* @param arr
*/
public static void selectSort(int[] arr) {
int temp = 0;
for (int i = 0; i < arr.length; i++) {
for (int j = i+1; j < arr.length; j++) {
if (arr[j] < arr[i]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
/**
* 选择排序
* 特定的元素和后面的元素依次比较
* 选择出最小元素的角标 然后交换
* @param arr
*/
public static void selectSort2(int[] arr) {
int temp = 0;
int k =0;
for (int i = 0; i < arr.length; i++) {
k = i;
for (int j = i+1; j < arr.length; j++) {
if (arr[j] < arr[k]) {
k = j;
}
}
temp = arr[k];
arr[k] = arr[i];
arr[i] = temp;
}
}
/**
* 插入排序
* @param arr
*/
public static void insertSort(int[] arr) {
int k = 0;
for (int i = 0; i < arr.length; i++) {
k = i;
int temp = arr[i];
for (int j = 0; j < i; j++) {
if (arr[j] > arr[k]) {
k = j;
break;
}
}
if(k != i){
for (int j = i; j > k; j--) {
arr[j] = arr[j-1];
}
arr[k] = temp;
}
}
}
/**
* 插入排序
* @param arr
*/
public static void insertSort2(int[] arr) {
if (arr.length < 2) {
return;
}
for (int i = 1; i < arr.length; i++) {
int temp = arr[i];
int k = i;
while(k > 0 && arr[k-1] > temp){
arr[k] = arr[k-1];
k--;
}
arr[k] = temp;
}
}
}