Java 排序 快速排序 冒泡排序 选择排序 插入排序
2017-08-10 09:31
417 查看
在平常写代码的过程中我们经常会遇到排序的情况,下面我就写了几种常见的排序算法,虽然在真正的项目开发中。很少会用到自己写的排序算法。但是只有懂得了排序算法具体是怎么实现的,这样用起来就会更加的得心应手。我只写了几种算法。下面贴上自己写的代码。代码里面有算法的思路,希望能够有点用。
package sort; /** * @author 曾炜龙 E-mail: 1501122784@qq.com * @date 创建时间:2017年8月9日 上午10:22:11 * @version 1.0 * @parameter 排序算法 * @since * @return */ public class SortDemo { /** * 冒泡排序 * 比较相邻的元素,如果第一个比第二个大,就交换他们两个 * 对么一堆相邻元素做同样的工作,从开始第一对到结尾最后一对。在这一点,最后的元素应该会是最大的数 * 针对所有的元素重复以上的步骤,除了最后一个, * 持续每次对越来越少的元素重复上面的步骤,知道没有任何一对数字需要比较 * @param numbers 整型数组 */ public static void bubbleSort(int[] numbers){ int size = numbers.length; int temp = 0; for(int i = 0;i<size-1;i++){ for(int j = 0;j<size-1-i;j++){ if(numbers[j]>numbers[j+1]){ 4000 temp = numbers[j]; numbers[j] = numbers[j+1]; numbers[j+1] = temp; } } } } /** * 快速排序 * 快速排序利用分治法,先取中值,然后利用中值对两边分别进行排序,然后递归调用函数。最后将数组组合在一起,就是排好序的 * */ public static void quickSort(int[] numbers,int low,int hign){ if(low<hign){ int middle = getMiddle(numbers,low,hign); quickSort(numbers,low,middle-1); //对低的一方进行递归排序 quickSort(numbers,middle+1,hign); //对高的一方进行递归排序 } } public static int getMiddle(int[] numbers,int low,int hign){ int temp = numbers[low]; //数组的第一个元素为中值 while(low<hign){ while(low<hign && numbers[hign]>temp){ hign--; } numbers[low] = numbers[hign]; while(low<hign && numbers[low]<temp){ low++; } numbers[hign] = numbers[low]; } numbers[low] = temp; return low; } /** * 快速排序方法调用 * */ public static void quick(int[] numbers){ if(numbers.length>0){ quickSort(numbers,0,numbers.length-1); } } /** * 选择排序 * 在未排序序列中找到最小元素,存放到排序序列的起始位置 * 再从剩余的元素中找到最小元素存放到 排序序列起始位置 * 以此类推,直到最后一个数排序完成 */ 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[j]<numbers[k]){ k= j; } } temp = numbers[i]; numbers[i] = numbers[k]; numbers[k] = temp; } } /** * 插入排序 * 取出第一个值,在排序序列元素中从后向前扫描 * 如果该元素大于新元素,则将该元素移到下一位置 * 重复步骤,直到找到已排序的元素小于或等于新元素的位置 */ 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]; for(j=i;j>0&&temp<numbers[j-1];j-- ){ numbers[j] = numbers[j-1]; } numbers[j] = temp; } } }
相关文章推荐
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 几种常见排序算法之Java实现(插入排序、希尔排序、冒泡排序、快速排序、选择排序、归并排序)
- [java]排序分类--及选择排序、插入排序、冒泡排序、快速排序的解释图和代码
- 排序方法整理Java - 冒泡排序、选择排序、插入排序、快速排序
- 牛客网Java刷题知识点之插入排序(直接插入排序和希尔排序)、选择排序(直接选择排序和堆排序)、冒泡排序、快速排序、归并排序和基数排序(博主推荐)
- [java]排序分类--及选择排序、插入排序、冒泡排序、快速排序的解释图和代码
- Java实现排序(快速排序、冒泡排序、选择排序、基数排序、插入排序)
- java基本排序算法-插入排序-快速排序-选择排序-冒泡排序
- 数组排序-冒泡排序-选择排序-插入排序-希尔排序-快速排序-Java实现
- (一)Java实现排序,选择排序,快速排序,冒泡排序,插入排序
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序java实现
- java必须知道的八大种排序算法:冒泡排序、 选择排序、插入排序、快速排序、希尔算法、归并排序算法、基数排序、堆排序算法
- Java实现冒泡排序、快速排序、选择排序、插入排序和归并排序
- Java分别实现冒泡排序、插入排序、快速排序、选择排序、交换排序
- Java常见排序:冒泡排序、快速排序、选择排序、插入排序、归并排序
- Java程序员从笨鸟到菜鸟(二)Java实现冒泡排序、快速排序、插入排序、选择排序等基本排序方式
- 元素排序几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 选择排序,插入排序,冒泡排序,希尔排序,快速排序,归并排序
- C# 插入排序 冒泡排序 选择排序 快速排序 堆排序 归并排序 基数排序 希尔排序