java实现排序(冒泡、选择、快速、插入)
2017-11-22 20:57
661 查看
最常用的几种排序算法今天复习一遍记录一下:
package com.dairujie.jedis.sort; public class Demo { public static void main(String[] args) { int[] numbers = { 23, 9, 8, 4, 5, 34, 66 }; maopao(numbers); quick(numbers); selectSort(numbers); insertSort(numbers); for (int i = 0; i < numbers.length; i++) { System.out.print(numbers[i] + " "); } } /** * 冒泡排序 * * @param numbers */ public static void maopao(int[] numbers) { int temp = 0; int size = numbers.length; for (int i = 0; i < size - 1; i++) { for (int j = 0; j < size - 1 - i; j++) { if (numbers[j] < numbers[j + 1]) // 交换两数位置 { temp = numbers[j]; numbers[j] = numbers[j + 1]; numbers[j + 1] = temp; } } } } /** * * @param numbers * 需要比较的数组 * @param low * 数组最小下标 * @param high * 数组最大下标 * @return */ public static int getMiddle(int[] numbers, int low, int high) { int temp = numbers[low]; // 数组的第一个作为中轴 while (low < high) { while (low < high && numbers[high] < temp) { high--; } numbers[low] = numbers[high];// 比中轴小的记录移到低端 while (low < high && numbers[low] > temp) { low++; } numbers[high] = numbers[low]; // 比中轴大的记录移到高端 } numbers[low] = temp; // 中轴记录到尾 return low; // 返回中轴的位置 } /** * * @param numbers * @param low * @param high */ public static void quickSort(int[] numbers, int low, int high) { if (low < high) { int middle = getMiddle(numbers, low, high); // 将numbers数组进行一分为二 quickSort(numbers, low, middle - 1); // 对低字段表进行递归排序 quickSort(numbers, middle + 1, high); // 对高字段表进行递归排序 } } /** * 快速排序 * * @param numbers */ public static void quick(int[] numbers) { if (numbers.length > 0) // 查看数组是否为空 { quickSort(numbers, 0, numbers.length - 1); } } /** * 选择排序 * * @param numbers */ public static void selectSort(int[] numbers) { int size = numbers.length; int temp = 0; for (int i = 0; i < size; i++) { int k = i; for (int j = size - 1; j > i; j--) { if (numbers[k] > numbers[j]) { k = j; } } temp = numbers[i]; numbers[i] = numbers[k]; numbers[k] = temp; } } /** * 插入排序 * @param numbers */ public static void insertSort(int[] numbers) { int size = numbers.length; int temp = 0; int j = 0; for (int i = 0; i < size; i++) { temp = numbers[i]; // 假如temp比前面的值小,则将前面的值后移 for (j = i; j > 0 && temp < numbers[j - 1]; j--) { numbers[j] = numbers[j - 1]; } numbers[j] = temp; } } }
相关文章推荐
- 常见的排序算法(Java实现):冒泡、插入、选择、快速排序
- 冒泡、插入、快速、选择排序的java实现
- 排序算法复习(Java实现): 插入,冒泡,选择,Shell,快速排序
- java实现常见排序(选择,冒泡,插入,快速,希尔,堆)
- java实现冒泡,选择,插入,快速排序
- 冒泡,选择,插入,快速排序在Java中的实现
- 排序算法复习(Java实现)(二): 插入,冒泡,选择,Shell,快速排序
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,快速排序
- 排序算法复习(Java实现):插入,冒泡,选择,Shell,快速排序, 归并排序,堆排序,桶式排序,基数排序
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- 【转】排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- java实现七大排序(插入,冒泡,选择,快速,堆,希尔,归并)
- 《冒泡,选择,插入,归并,希尔,快速》排序算法java实现一览
- c++实现冒泡,选择,插入,快速排序
- Java实现数据排序(冒泡、选择、插入、快速排序)---方法持续更新中
- C语言实现 排序源程序(包括直接插入、希尔、冒泡、快速、简单选择、堆排序)
- 选择,插入,希尔,快速,堆,归并排序六种排序方式的Java 实现和性能对比(付代码)
- 插入,冒泡,选择,快速排序,二分查找(Java版)