二分排序(java)

原创 2016年05月30日 14:42:28

基本思想就是:将待排序元素分成大小大致相同 的两个子集合,分别 对两个子集合进行排序,最终将排好序的子集合合并成所要求的排好序的集合。这里写图片描述

这里写图片描述

package com.suanfa;
/**
 * 二分排序
 * @author Administrator
 *
 */
public class Merge {
       //递归分成小部分
    public void merge_sort(int[] arrays,int start,int end){
        if(start<end){
            int m=(start+end)/2;
            merge_sort(arrays,start,m);
            merge_sort(arrays,m+1,end);
            combin_arrays(arrays,start,m,end);    
        }
    }
    //合并数组
    public void combin_arrays(int[] arrays,int start,int m,int end){
        int length=end-start+1;
        int temp[]=new int[length];//用来存放比较的数组,用完复制回到原来的数组
        int i=start;
        int j=m+1;
        int c=0;
        while(i<=m &&j<=end){
            if(arrays[i]<arrays[j]){
                temp[c]=arrays[i];
                i++;
                c++;
            }else{
                temp[c]=arrays[j];
                j++;
                c++;
            }
        }
        while(i<=m){
            temp[c]=arrays[i];
            i++;
            c++;
        }
        while(j<=end){
        temp[c]=arrays[j];
        j++;
        c++;
        }
        c=0;
        for(int t=start;t<=end;t++,c++){
            arrays[t]=temp[c];
        }
        snp(arrays);
    }
    //打印数组
    public void snp(int[] arrays){
        for(int i=0;i<arrays.length;i++){
       System.out.print(arrays[i]+" ");
        }
        System.out.println();
    }

    public static void main(String[] args) 
    {
        Merge m=new Merge();
        int a[]={5,4,10,8,7,9,11,13,12,15,14};
        m.merge_sort(a,0,a.length-1);

    }
}

运行结果
这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。

java 二分排序

package com.guxia; public class Test { public static void main(String[] args) { int []a={4,2,1,6...

Java 实现二分(折半)插入排序

设有一个序列a[0],a[1]...a[n];其中a[i-1]前是已经有序的,当插入时a[i]时,利用二分法搜索a[i]插入的位置 效率:O(N^2),对于初始基本有序的序列,效率上不如直接插入排序;...

java 实现二分归并排序

首先 解释一下什么是归并排序的精髓就是把一个乱序数组划分成小的数组来排序,然后再把小的数组合并成大的小组,下面的这张图能够明确说明什么是归并排序 虽然看图感觉二路归并排序很简单,但是实际操作起来还是...

算法——二分查找算法(Java实现)

1、前提:二分查找的前提是需要查找的数组必须是已排序的,我们这里的实现默认为升序 2、原理:将数组分为三部分,依次是中值(所谓的中值就是数组中间位置的那个值)前,中值,中值后;将要查找的值和数组的中...
  • CYXLZZS
  • CYXLZZS
  • 2012年04月01日 10:54
  • 34148

排序算法二:二分(折半)插入排序

在我的博文《“主宰世界”的10种算法短评》中给出的首个算法就是高效的排序算法。本文将对排序算法做一个全面的梳理,从最简单的“冒泡”到高效的堆排序等。上一篇博文《排序算法一:直接插入排序》讲述了直接插入...

我的Java开发学习之旅------>Java经典排序算法之二分插入排序

一、折半插入排序(二分插入排序) 将直接插入排序中寻找A[i]的插入位置的方法改为采用折半比较,即可得到折半插入排序算法。在处理A[i]时,A[0]……A[i-1]已经按关键码值排好序。所谓...

在java用二分查找法实现对数组的排序

二分查找法:前提是数组中的元素要有序,这里只贴自己的图片,至于代码要靠自己写了,毕竟单纯的复制粘贴而不去思考对学习一点用处都没有: 实际上数组已经自带了一个排序算法: Arrays.sort(数组...

七大排序算法(冒泡,选择,插入,二分法排序,希尔,快速,合并,堆排序)的java实现(14/8/3更新加入二分排序)

冒泡排序 思路:就是每次将最大或最小的元素放到数组的最后,so easy!时间复杂度为(O(n^2)) public class BubbleSort { public static void bu...

二分排序法(折半插入法)

二分排序法貌似是第一次听说,在wangsifu2009的博客上看到。 以前只听说过堆排序、快排序、希尔排序、选择、插入、冒泡排序,于是在网上搜索了一下,其代码实现是这样的: #include ...

二分排序与二分查找

1、规定排序的实现       分治法的三步法:           划分问题:(把序列二分),           递归求解:(分别对左右子序列递归排序)           合并结果:(根...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:二分排序(java)
举报原因:
原因补充:

(最多只允许输入30个字)