• 排序小结(java版)


    一、归并排序

    
    
    package org.lxh.demo08.b;
    
    
    class Sort
    {
        private int[] a;
        private int n;
        Sort(int n)
        {
            a=new int[n];
        }
        Sort(int[] a,int n)
        {
            this.n=n;
            this.a=new int[n];
            this.a=a;
        }
        public void print()
        {
            for(int i=0;i<n;i++)
                System.out.print(a[i]+" ");
        }
        //合并a[u,...,v-1]和[v,...,t]
        public void merge(int a[], int[] des,int u,int v,int t)
        {
            int i=u;
            int j=v;
            int k=u;
            while(i<=v-1&&j<=t)
            {
                if(a[i]<=a[j])
                    des[k++]=a[i++];
                else
                    des[k++]=a[j++];            
            }
            while(i<=v-1)
                des[k++]=a[i++];
            while(j<=t)
                des[k++]=a[j++];
        }
        public void onepass(int a[],int[] des,int s)
        {
            int u=0;
            int v=s;
            int t=2*s-1;
            while(n-u>=2*s)
            {
                merge(a,des,u,v,t);
                u+=2*s;
                v+=2*s;
                t+=2*s;
            }
            if(n-u>s)
                merge(a,des,u,v,n-1);
            else
            {
                System.arraycopy(a,u,des,u,n-u);
        /*        for(;u<n;u++)
                {
                    des[u]=a[u];                
                }*/
            }
        }
        public void mergesort()
        {
            int s=1;
            int[] des=new int[n];
            while(s<n)
            {
                onepass(a,des,s);
                s=2*s;
                if(s>=n)
                {
                    System.arraycopy(des,0,a,0,n);
                }
                else
                {
                    onepass(des,a,s);
                    s=2*s;
                }
            }
            des=null;
        }
    }
    public class RunnableTest
    {
        public static void main(String args[]) 
        {
            int[] a={5,8,2,7,1,0,6};
            Sort b=new Sort(a,7);
            b.mergesort();
            b.print();
        }
    }
  • 相关阅读:
    《Spring in action 4》(十一)SSM + Redis
    git 上传时报文件已存在的错
    JQuery--find与filter
    初识mysql
    并发--模块整理
    守护进程与守护线程
    用string模块生成随机验证码
    loggin 模块及其单例模式
    TCP协议--黏包现象
    网络编程---tcp/udp协议
  • 原文地址:https://www.cnblogs.com/nilongqibu/p/3644935.html
Copyright © 2020-2023  润新知