public class Sort {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arry = { 19, 10, 5, 45, 100, 30, 35, 29 };
int[] sortArry = mergeSort(arry);
for (int i = 0; i < sortArry.length; i++) {
System.out.println(sortArry[i]);
}
}
/**
* 前后颠倒顺序
*
* @param arry
* @param i
* @param j
*/
private static void swap(int[] arry, int i, int j) {
int temp = arry[i];
arry[i] = arry[j];
arry[j] = temp;
}
/**
* 冒泡排序
*
* @param arry
* @return
*/
private static int[] bubbleSort(int[] arry) {
for (int i = 0; i < arry.length; i++) {
for (int j = 0; j < arry.length - i - 1; j++) {
if (arry[j] > arry[j + 1]) {
swap(arry, j, j + 1);
}
}
}
return arry;
}
/**
* 插入排序
*
* @param arry
* @return
*/
private static int[] insertSort(int[] arry) {
for (int i = 0; i < arry.length; i++) {
for (int j = i; j > 0 && arry[j] < arry[j - 1]; j--) {
swap(arry, j, j - 1);
}
}
return arry;
}
/**
* 快速排序
*
* @param data
* @param i
* @param j
*/
private static int[] quickSort(int[] arry) {
return arry;
}
/**
* 选择排序
*
* @param arry
* @return
*/
private static int[] selectionSort(int[] arry) {
for (int i = 0; i < arry.length; i++) {
int lowIndex = i;
for (int j = arry.length - 1; j > i; j--) {
if (arry[j] < arry[lowIndex]) {
lowIndex = j;
}
}
swap(arry, i, lowIndex);
}
return arry;
}
/**
* 归并排序
*
* @param arry
* @param temp
* @param l
* @param r
*/
private static void sort(int[] arry, int[] temp, int l, int r) {
int mid = (l + r) / 2;
if (l == r) {
return;
}
sort(arry, temp, l, mid);
sort(arry, temp, mid + 1, r);
for (int i = l; i <= r; i++) {
temp[i] = arry[i];
}
int i1 = l;
int i2 = mid + 1;
for (int cur = l; cur <= r; cur++) {
if (i1 == mid + 1) {
arry[cur] = temp[i2++];
} else if (i2 > r) {
arry[cur] = temp[i1++];
} else if (temp[i1] < temp[i2]) {
arry[cur] = temp[i1++];
} else {
arry[cur] = temp[i2++];
}
}
}
private static int[] mergeSort(int[] data) {
int[] temp = new int[data.length];
sort(data, temp, 0, data.length - 1);
return data;
}
}