您的位置:首页 > 编程语言 > Java开发

四大常用排序算法实现-JAVA版

2016-06-17 17:13 309 查看
public class Sort {
public static void main(String[] args) {
int[] arr = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
System.out.println("原始序列");
for (int i = 0; i < arr.length; i++) {// 打印原始序列
System.out.print(arr[i] + " ");
}

// bubbleSort(arr);
// System.out.println("\n冒泡排序");
// for (int i = 0; i < arr.length; i++) {
// System.out.print(arr[i] + " ");
// }

// quickSort(arr, 0, arr.length - 1);
// System.out.println("\n快速排序");
// for (int i = 0; i < arr.length; i++) {
// System.out.print(arr[i] + " ");
// }

// selectSort(arr);
// System.out.println("\n选择排序");
// for (int i = 0; i < arr.length; i++) {
// System.out.print(arr[i] + " ");
// }

insertSort(arr);
System.out.println("\n插入排序");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}

/**
* 冒泡排序
*
* @param arr
*/
public static void bubbleSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}

/**
* 快速排序
*
* @param list
*/
public static void quickSort(int[] list, int low, int high) {
if (low < high) {
int middle = getMiddle(list, low, high); // 将list数组进行一分为二
quickSort(list, low, middle - 1); // 对低字表进行递归排序
quickSort(list, middle + 1, high); // 对高字表进行递归排序
}
}

/**
* 快速排序--获取中轴
*
* @param list
* @param low
* @param high
* @return
*/
public static int getMiddle(int[] list, int low, int high) {
int tmp = list[low]; // 数组的第一个作为中轴
while (low < high) {
while (low < high && list[high] >= tmp) {
high--;
}
list[low] = list[high]; // 比中轴小的记录移到低端

while (low < high && list[low] <= tmp) {
low++;
}
list[high] = list[low]; // 比中轴大的记录移到高端
}

list[low] = tmp; // 中轴记录到尾
return low; // 返回中轴的位置
}

/**
* 选择排序
*
* @param list
*/
public static void selectSort(int[] list) {
for (int i = 0; i < list.length - 1; i++) {
int min = i;
for (int j = i + 1; j < list.length; j++) {
if (list[min] > list[j]) {
min = j;
}
}
// 将当前第一个元素与它后面序列中的最小的一个 元素交换,也就是将最小的元素放在最前端
if (i != min) {
int tmp = list[i];
list[i] = list[min];
list[min] = tmp;
}
}
}

/**
* 插入排序
*
* @param list
*/
public static void insertSort(int[] array) {
for (int i = 1; i < array.length; i++) {
int currentValue = array[i];
int position = i;
for (int j = i - 1; j >= 0; j--) {
if (array[j] > currentValue) {
array[j + 1] = array[j];
position -= 1;
} else {
break;
}
}
array[position] = currentValue;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  排序算法