二分排序(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实现二分插入排序

今天是二分插入排序算法,二分插入排序算法是直接插入排序算法de

java 二分排序

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

Java排序[理解]+优化冒泡+二分查找

java排序: 冒泡。 插入。 选择。 查找--- 二分递归查找

基础排序算法与二分查找算法Java版本(下)

/** * Created by Alvin on 15/11/11. */ public class Sort {public static void swap(int[] temp ,i...

java两种排序及二分查找

class SelectSort { public static void main(String[] args) { /* 选择排序:元素1和元素2比,把用最大的值继续和第三个数比较...

Java基础04天 学习笔记_数组进阶(数组排序,二分查找,进制转换,二维数组)

01 数组静态初始化   定义格式1 int[] arr= new int[5]; 定义格式2 , 赋值啦 int[] arr = new int[] {3,5,7,9}; //静态...

C++、C#、java算法学习日记04----二分插入排序

经过上几篇对排序算法的了解,我们发现,所谓的排序也就是确定一个数组中每个元素的位置,然后对号入座,其过程也就是找到该元素的位置。确定位置,使用二分法可以达到很高的效率,我们将他应用到插入排序中就算是对...
  • HC666
  • HC666
  • 2015-10-30 17:22
  • 1424

黑马程序员_Java基础_04数组main函数args详解、数组排序、二分查找实例

一、main函数args详解 public class TestArray{  public static void main(String args[]){ ...

JAVA实现冒泡排序和二分查找

冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已...

Java排序算法和二分查找

package Bean; public class Sort { static int nElement = 0; int[] arr; public Sort(int max) { ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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