四大常用排序算法实现-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; } }
相关文章推荐
- JavaScript演示排序算法
- 算法之排序算法的算法思想和使用场景总结
- PHP版本常用的排序算法汇总
- JavaScript实现多种排序算法
- php 地区分类排序算法
- js三种排序算法分享
- Javascript中的常见排序算法
- java 合并排序算法、冒泡排序算法、选择排序算法、插入排序算法、快速排序算法的描述
- 使用Java实现希尔排序算法的简单示例
- 排序算法的javascript实现与讲解(99js手记)
- 图文详解Heap Sort堆排序算法及JavaScript的代码实现
- C++中十种内部排序算法的比较分析
- Java实现几种常见排序算法代码
- 浅谈javascript实现八大排序
- C语言演示对归并排序算法的优化实现
- PHP常用的排序和查找算法
- JavaScript中九种常用排序算法
- STl中的排序算法详细解析
- 算法学习入门之使用C语言实现各大基本的排序算法
- PHP四种基本排序算法示例