`

JAVA高级

    博客分类:
  • JAVA
阅读更多

http://java.chinaitlab.com/advance/910025_2.html

Java代码

    1.插入排序:

    2.

    3.1.package org.rut.util.algorithm.support;

    4.2.import org.rut.util.algorithm.SortUtil;

    5.3.4.public class InsertSort implements SortUtil.Sort{

    6.5.    /* (non-Javadoc)

    7.6.     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])

    8.7.     */

    9.8.    public void sort(int[] data) {

    10.9.        int temp;

    11.10.        for(int i=1;i<data.length;i++){

    12.11.            for(int j=i;(j>0)&&(data[j]<data[j-1]);j--){

    13.12.                SortUtil.swap(data,j,j-1);

    14.13.            }

    15.14.        }

    16.15.    }

    17.16.}

    18.17.冒泡排序:

    19.

    20.1.package org.rut.util.algorithm.support;

    21.2.import org.rut.util.algorithm.SortUtil;

    22.3.4.public class BubbleSort implements SortUtil.Sort{

    23.5.    /* (non-Javadoc)

    24.6.     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])

    25.7.     */

    26.8.    public void sort(int[] data) {

    27.9.        int temp;

    28.10.        for(int i=0;i<data.length;i++){

    29.11.            for(int j=data.length-1;j>i;j--){

    30.12.                if(data[j]<data[j-1]){

    31.13.                    SortUtil.swap(data,j,j-1);

    32.14.                }

    33.15.            }

    34.16.        }

    35.17.    }

    36.18.}

    37.19.选择排序:

    38.1.package org.rut.util.algorithm.support;

    39.2.import org.rut.util.algorithm.SortUtil;

    40.3.4.public class SelectionSort implements SortUtil.Sort {

    41.5.    /*

    42.6.     * (non-Javadoc)

    43.7.     *

    44.8.     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])

    45.9.     */

    46.10.    public void sort(int[] data) {

    47.11.        int temp;

    48.12.        for (int i = 0; i < data.length; i++) {

    49.13.            int lowIndex = i;

    50.14.            for (int j = data.length - 1; j > i; j--) {

    51.15.                if (data[j] < data[lowIndex]) {

    52.16.                    lowIndex = j;

    53.17.                }

    54.18.            }

    55.19.            SortUtil.swap(data,i,lowIndex);

    56.20.        }

    57.21.    }

    58.22.}

    59.23.Shell排序:

    60.1.package org.rut.util.algorithm.support;

    61.2.import org.rut.util.algorithm.SortUtil;

    62.3.4.public class ShellSort implements SortUtil.Sort{

    63.5.    /* (non-Javadoc)

    64.6.     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])

    65.7.     */

    66.8.    public void sort(int[] data) {

    67.9.        for(int i=data.length/2;i>2;i/=2){

    68.10.            for(int j=0;j<i;j++){

    69.11.                insertSort(data,j,i);

    70.12.            }

    71.13.        }

    72.14.        insertSort(data,0,1);

    73.15.    }

    74.16.    /**

    75.17.     * @param data

    76.18.     * @param j

    77.19.     * @param i

    78.20.     */

    79.21.    private void insertSort(int[] data, int start, int inc) {

    80.22.        int temp;

    81.23.        for(int i=start+inc;i<data.length;i+=inc){

    82.24.            for(int j=i;(j>=inc)&&(data[j]<data[j-inc]);j-=inc){

    83.25.                SortUtil.swap(data,j,j-inc);

    84.26.            }

    85.27.        }

    86.28.    }

    87.29.}

    88.30.快速排序:

    89.1.package org.rut.util.algorithm.support;

    90.2.import org.rut.util.algorithm.SortUtil;

    91.3.4.public class QuickSort implements SortUtil.Sort{

    92.5.    /* (non-Javadoc)

    93.6.     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])

    94.7.     */

    95.8.    public void sort(int[] data) {

    96.9.        quickSort(data,0,data.length-1);

    97.10.    }

    98.11.    private void quickSort(int[] data,int i,int j){

    99.12.        int pivotIndex=(i+j)/2;

    100.13.        //swap 14.        SortUtil.swap(data,pivotIndex,j);

    101.15.

    102.16.        int k=partition(data,i-1,j,data[j]);

    103.17.        SortUtil.swap(data,k,j);

    104.18.        if((k-i)>1) quickSort(data,i,k-1);

    105.19.        if((j-k)>1) quickSort(data,k+1,j);

    106.20.

    107.21.    }

    108.22.    /**

    109.23.     * @param data

    110.24.     * @param i

    111.25.     * @param j

    112.26.     * @return

    113.27.     */

    114.28.    private int partition(int[] data, int l, int r,int pivot) {

    115.29.        do{

    116.30.           while(data[++l]<pivot);

    117.31.           while((r!=0)&&data[--r]>pivot);

    118.32.           SortUtil.swap(data,l,r);

    119.33.        }

    120.34.        while(l<r);

    121.35.        SortUtil.swap(data,l,r);

    122.36.        return l;

    123.37.    }

    124.38.}

    125.39.改进后的快速排序:

    126.1.package org.rut.util.algorithm.support;

    127.2.import org.rut.util.algorithm.SortUtil;

    128.3.4.public class ImprovedQuickSort implements SortUtil.Sort {

    129.5.    private static int MAX_STACK_SIZE=4096;

    130.6.    private static int THRESHOLD=10;

    131.7.    /* (non-Javadoc)

    132.8.     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])

    133.9.     */

    134.10.    public void sort(int[] data) {

    135.11.        int[] stack=new int[MAX_STACK_SIZE];

    136.12.

    137.13.        int top=-1;

    138.14.        int pivot;

    139.15.        int pivotIndex,l,r;

    140.16.

    141.17.        stack[++top]=0;

    142.18.        stack[++top]=data.length-1;

    143.19.

    144.20.        while(top>0){

    145.21.            int j=stack[top--];

    146.22.            int i=stack[top--];

    147.23.

    148.24.            pivotIndex=(i+j)/2;

    149.25.            pivot=data[pivotIndex];

    150.26.

    151.27.            SortUtil.swap(data,pivotIndex,j);

    152.28.

    153.29.            //partition 30.            l=i-1;

    154.31.            r=j;

    155.32.            do{

    156.33.                while(data[++l]<pivot);

    157.34.                while((r!=0)&&(data[--r]>pivot));

    158.35.                SortUtil.swap(data,l,r);

    159.36.            }

    160.37.            while(l<r);

    161.38.            SortUtil.swap(data,l,r);

    162.39.            SortUtil.swap(data,l,j);

    163.40.

    164.41.            if((l-i)>THRESHOLD){

    165.42.                stack[++top]=i;

    166.43.                stack[++top]=l-1;

    167.44.            }

    168.45.            if((j-l)>THRESHOLD){

    169.46.                stack[++top]=l+1;

    170.47.                stack[++top]=j;

    171.48.            }

    172.49.

    173.50.        }

    174.51.        //new InsertSort().sort(data); 52.        insertSort(data);

    175.53.    }

    176.54.    /**

    177.55.     * @param data

    178.56.     */

    179.57.    private void insertSort(int[] data) {

180.58.        int temp;

    181.59.        for(int i=1;i<data.length;i++){

    182.60.            for(int j=i;(j>0)&&(data[j]<data[j-1]);j--){

    183.61.                SortUtil.swap(data,j,j-1);

    184.62.            }

    185.63.        }

    186.64.    }

    187.65.}

    188.66.归并排序:

    189.1.package org.rut.util.algorithm.support;

    190.2.import org.rut.util.algorithm.SortUtil;

    191.3.4.public class MergeSort implements SortUtil.Sort{

    192.5.    /* (non-Javadoc)

    193.6.     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])

    194.7.     */

    195.8.    public void sort(int[] data) {

    196.9.        int[] temp=new int[data.length];

    197.10.        mergeSort(data,temp,0,data.length-1);

    198.11.    }

    199.12.

    200.13.    private void mergeSort(int[] data,int[] temp,int l,int r){

    201.14.        int mid=(l+r)/2;

    202.15.        if(l==r) return ;

    203.16.        mergeSort(data,temp,l,mid);

    204.17.        mergeSort(data,temp,mid+1,r);

    205.18.        for(int i=l;i<=r;i++){

    206.19.            temp[i]=data[i];

    207.20.        }

    208.21.        int i1=l;

    209.22.        int i2=mid+1;

    210.23.        for(int cur=l;cur<=r;cur++){

    211.24.            if(i1==mid+1)

    212.25.                data[cur]=temp[i2++];

    213.26.            else if(i2>r)

    214.27.                data[cur]=temp[i1++];

    215.28.            else if(temp[i1]<temp[i2])

    216.29.                data[cur]=temp[i1++];

    217.30.            else

    218.31.                data[cur]=temp[i2++];

    219.32.        }

    220.33.    }

    221.34.}

    222.35.改进后的归并排序:

    223.

    224.1.package org.rut.util.algorithm.support;

    225.2.import org.rut.util.algorithm.SortUtil;

    226.3.4.public class ImprovedMergeSort implements SortUtil.Sort {

    227.5.    private static final int THRESHOLD = 10;

    228.6.    /*

    229.7.     * (non-Javadoc)

    230.8.     *

    231.9.     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])

    232.10.     */

    233.11.    public void sort(int[] data) {

    234.12.        int[] temp=new int[data.length];

    235.13.        mergeSort(data,temp,0,data.length-1);

    236.14.    }

    237.15.    private void mergeSort(int[] data, int[] temp, int l, int r) {

    238.16.        int i, j, k;

    239.17.        int mid = (l + r) / 2;

    240.18.        if (l == r)

    241.19.            return;

    242.20.        if ((mid - l) >= THRESHOLD)

    243.21.            mergeSort(data, temp, l, mid);

    244.22.        else

    245.23.            insertSort(data, l, mid - l + 1);

    246.24.        if ((r - mid) > THRESHOLD)

    247.25.            mergeSort(data, temp, mid + 1, r);

    248.26.        else

    249.27.            insertSort(data, mid + 1, r - mid);

    250.28.        for (i = l; i <= mid; i++) {

    251.29.            temp[i] = data[i];

    252.30.        }

    253.31.        for (j = 1; j <= r - mid; j++) {

    254.32.            temp[r - j + 1] = data[j + mid];

    255.33.        }

    256.34.        int a = temp[l];

    257.35.        int b = temp[r];

    258.36.        for (i = l, j = r, k = l; k <= r; k++) {

    259.37.            if (a < b) {

    260.38.                data[k] = temp[i++];

    261.39.                a = temp[i];

    262.40.            } else {

    263.41.                data[k] = temp[j--];

    264.42.                b = temp[j];

    265.43.            }

    266.44.        }

    267.45.    }

    268.46.    /**

    269.47.     * @param data

    270.48.     * @param l

    271.49.     * @param i

    272.50.     */

    273.51.    private void insertSort(int[] data, int start, int len) {

    274.52.        for(int i=start+1;i<start+len;i++){

    275.53.            for(int j=i;(j>start) && data[j]<data[j-1];j--){

    276.54.                SortUtil.swap(data,j,j-1);

    277.55.            }

    278.56.        }

    279.57.    }

    280.58.}

    281.59.堆排序:

    282.1.package org.rut.util.algorithm.support;

    283.2.import org.rut.util.algorithm.SortUtil;

    284.3.4.public class HeapSort implements SortUtil.Sort{

    285.5.    /* (non-Javadoc)

    286.6.     * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])

    287.7.     */

    288.8.    public void sort(int[] data) {

    289.9.        MaxHeap h=new MaxHeap();

    290.10.        h.init(data);

    291.11.        for(int i=0;i<data.length;i++)

    292.12.            h.remove();

    293.13.        System.arraycopy(h.queue,1,data,0,data.length);

    294.14.    }

    295.15.16.     private static class MaxHeap{

    296.17.

    297.18.

    298.19.        void init(int[] data){

    299.20.            this.queue=new int[data.length+1];

    300.21.            for(int i=0;i<data.length;i++){

    301.22.                queue[++size]=data[i];

    302.23.                fixUp(size);

    303.24.            }

    304.25.        }

    305.26.

    306.27.        private int size=0;

    307.28.        private int[] queue;

    308.29.

    309.30.        public int get() {

    310.31.            return queue[1];

    311.32.        }

    312.33.        public void remove() {

    313.34.            SortUtil.swap(queue,1,size--);

    314.35.            fixDown(1);

    315.36.        }

    316.37.        //fixdown 38.        private void fixDown(int k) {

    317.39.            int j;

    318.40.            while ((j = k << 1) <= size) {

    319.41.                if (j < size && queue[j]<queue[j+1])

    320.42.                    j++;

    321.43.                if (queue[k]>queue[j]) //不用交换 44.                    break;

    322.45.                SortUtil.swap(queue,j,k);

    323.46.                k = j;

    324.47.            }

    325.48.        }

    326.49.        private void fixUp(int k) {

    327.50.            while (k > 1) {

    328.51.                int j = k >> 1;

    329.52.                if (queue[j]>queue[k])

    330.53.                    break;

    331.54.                SortUtil.swap(queue,j,k);

    332.55.                k = j;

    333.56.            }

    334.57.        }

    335.58.    }

    336.59.}

    337.60.SortUtil:

    338.1.package org.rut.util.algorithm;

    339.2.import org.rut.util.algorithm.support.BubbleSort;

    340.3.import org.rut.util.algorithm.support.HeapSort;

    341.4.import org.rut.util.algorithm.support.ImprovedMergeSort;

    342.5.import org.rut.util.algorithm.support.ImprovedQuickSort;

    343.6.import org.rut.util.algorithm.support.InsertSort;

    344.7.import org.rut.util.algorithm.support.MergeSort;

    345.8.import org.rut.util.algorithm.support.QuickSort;

    346.9.import org.rut.util.algorithm.support.SelectionSort;

    347.10.import org.rut.util.algorithm.support.ShellSort;

    348.11.12.public class SortUtil {

    349.13.    public final static int INSERT = 1;

    350.14.    public final static int BUBBLE = 2;

    351.15.    public final static int SELECTION = 3;

    352.16.    public final static int SHELL = 4;

    353.17.    public final static int QUICK = 5;

    354.18.    public final static int IMPROVED_QUICK = 6;

    355.19.    public final static int MERGE = 7;

    356.20.    public final static int IMPROVED_MERGE = 8;

    357.21.    public final static int HEAP = 9;

    358.22.    public static void sort(int[] data) {

    359.23.        sort(data, IMPROVED_QUICK);

    360.24.    }

    361.25.    private static String[] name={

    362.26.            “insert”,“bubble”,“selection”,“shell”,“quick”,“improved_quick”,“merge”,“improved_merge”,“heap”

    363.27.    };

    364.28.

    365.29.    private static Sort[] impl=new Sort[]{

    366.30.            new InsertSort(),

    367.31.            new BubbleSort(),

    368.32.            new SelectionSort(),

    369.33.            new ShellSort(),

    370.34.            new QuickSort(),

    371.35.            new ImprovedQuickSort(),

    372.36.            new MergeSort(),

    373.37.            new ImprovedMergeSort(),

    374.38.            new HeapSort()

    375.39.    };

    376.40.    public static String toString(int algorithm){

    377.41.        return name[algorithm-1];

    378.42.    }

    379.43.

    380.44.    public static void sort(int[] data, int algorithm) {

    381.45.        impl[algorithm-1].sort(data);

    382.46.    }

    383.47.    public static interface Sort {

    384.48.        public void sort(int[] data);

    385.49.    }

    386.50.    public static void swap(int[] data, int i, int j) {

    387.51.        int temp = data[i];

    388.52.        data[i] = data[j];

    389.53.        data[j] = temp;

    390.54.    }

    391.55.}

分享到:
评论

相关推荐

    Java高级实用教程

    本教程"Java高级实用教程"旨在帮助你深入理解和掌握Java的核心高级概念,从而提升你的编程技能和解决问题的能力。下面将对Java的一些关键高级知识点进行详尽的阐述。 1. **多线程**:Java提供了丰富的多线程支持,...

    java高级.zip

    Java高级编程涵盖了许多关键概念,这些概念在开发复杂的软件系统时尤为重要。让我们深入探讨一下标题和描述中提及的几个核心知识点: 1. **图形界面编程**:Java提供了丰富的图形用户界面(GUI)工具包,如JavaFX和...

    Java高级工程师岗位笔试题目.docx

    **Java高级工程师岗位笔试题目** **一、选择题(每题2分,共20分)** 1. 下列哪个类是所有Java类的父类(除了Object类本身),即使是那些没有明确使用extends关键字的类? A. Cloneable B. Serializable C. ...

    java高级实用教程

    java高级实用教程 java高级实用教程

    Java高级面试题和常见面试及答案汇总.rar

    本资源包含"Java高级面试题整理(附答案).docx"和"最常见的Java面试题及答案汇总(一).docx"两份文档,旨在为求职者提供全面的准备材料。 1. **Java基础** - 数据类型:包括基本数据类型和引用数据类型的区别与...

    2018最新最全java高级工程师面试题

    2018年最全的Java高级工程师面试题集锦,包含了十几个文档,可以预见这些文档将涵盖JVM原理、并发编程、设计模式、数据结构与算法、Spring框架、数据库设计与优化、网络协议等多个领域。 1. **JVM(Java虚拟机)** ...

    JAVA高级知识点整理.rar

    本资料"JAVA高级知识点整理.rar"主要涵盖了多线程、虚拟机、Java IO/NIO以及Java集合框架等核心主题,旨在帮助开发者深入理解Java平台的高级特性和最佳实践。 首先,多线程是Java编程中的重要组成部分,它允许程序...

    java高级教程JAVA高级教程

    以上就是Java高级教程中可能涵盖的一些核心知识点。熟练掌握这些内容,将使你能够编写出高效、可维护且易于扩展的Java应用。同时,持续关注Java的新特性和发展趋势,如Java 11、12及更高版本的更新,也是保持技术...

    徐传运 JAVA高级程序设计课后习题答案

    《JAVA高级程序设计》是徐传运教授在清华大学出版社出版的一本深入讲解Java编程的教材。这本书涵盖了Java语言的核心概念、高级特性和程序设计方法,旨在帮助读者掌握扎实的Java编程技能并提升算法与程序设计能力。...

    Java高级编程实用教程

    Java高级编程实用教程是针对已经掌握了Java基础的开发者们深入学习的一门课程,旨在提升他们的编程技巧和解决复杂问题的能力。本教程将涵盖多个关键领域,包括多线程、网络编程、I/O流、反射、异常处理、集合框架、...

    JAVA高级编程ppt

    在深入探讨JAVA高级编程之前,我们首先需要理解Java语言的核心特性。Java是一种多平台、面向对象的编程语言,由Sun Microsystems(现为Oracle Corporation的一部分)于1995年发布。它的设计目标是提供“一次编写,...

    北大Java高级技术课程pdf(1)

    《北大Java高级技术课程pdf(1)》是北京大学信息科学技术学院软件研究所提供的专业课程资料,由李戈教授领衔,旨在为新手提供深入学习Java高级技术的机会。本课程不仅覆盖了Java语言的基础,还深入探讨了Java相关的...

    互联网企业面试真题-Java高级等.zip

    上海-拼多多-Java高级.pdf 上海-携程-Java高级.pdf 北京-京东-Java中级.pdf 北京-百度-Java中级.pdf 南京-软通动力-Java中级.pdf 厦门-中软国际-Java中级.pdf 广州-唯品会-Java大数据开发工程师.pdf 杭州-蚂蚁金服-...

    java高级程序设计

    Java高级程序设计是一门深入探讨Java编程技术的课程,涵盖了多个关键领域,旨在提升开发者对Java平台的理解和应用能力。本教程将详细讲解Java界面编程、数据库交互以及网络编程这三大核心主题,帮助你掌握Java在复杂...

    知名企业java高级工程师面试题附答案

    ### Java高级工程师面试知识点解析 #### JSP与Servlet的异同及联系 - **相同点**:JSP和Servlet都属于Java Web开发的核心技术之一,主要用于动态网页的生成。 - **不同点**: - **本质区别**:JSP本质上是简化版...

    java高级(思想)书

    《Java高级(思想)书》是一份集合了深入学习Java技术的电子书籍资源,主要针对已经掌握了Java基础知识的读者。这个压缩包包含了三本重量级的书籍:《面向对象分析与设计(UML2.0版)》、《设计模式_cn》以及《java...

    java高级理论-1

    Java高级理论是Java开发者在掌握基础语法之后进一步提升技能的关键领域。这个学习资料包,"java高级理论-1",包含了对深入Java编程至关重要的概念和技术。它特别适合那些已经具备一定基础,想要深化理解或者准备参加...

    java高级程序设计PPT

    Java高级程序设计是Java开发中的重要领域,涵盖了多线程、网络编程、内存管理、反射、I/O流、集合框架优化、性能调优等多个主题。这份"java高级程序设计PPT"应该是一份详尽的教学资料,对于已经掌握了Java基础知识的...

    JAVA高级开发必备

    "JAVA高级开发必备"这一主题涵盖了多个关键知识点,包括但不限于面向对象编程(Object-Oriented Programming, OOP)、设计模式、并发处理、内存管理、性能优化、以及Java的相关框架和工具。 首先,面向对象编程是...

    345个Java高级编程源码大全打包

    | 345个Java高级编程_源码大全打包 | | 内含: | | 345个Java高级编程_源码大全打包 | +--- 100个Java经典编程实例源代码 | | +--- 45款 Java 游戏源代码 | | +--- 50个 JAVA游戏开发编程基础源码 ...

Global site tag (gtag.js) - Google Analytics