文档章节

各种常见的排序 java版本(冒泡,选择,插入,希尔,快速)

wangjinzhao
 wangjinzhao
发布于 2015/05/24 15:55
字数 541
阅读 12
收藏 0

1.冒泡排序

/**

 * Created by jinzhao.w on 2015/4/7.

 */

public class BubbleSort {


    public static int [] sort(int [] array){

        int temp=0;

        for(int i=array.length-1;i>0;--i){

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

                if(array[j]>array[j+1]){

                    temp=array[j];

                    array[j]=array[j+1];

                    array[j+1]=temp;

                }

            }

        }

        return array;

    }


    public static void main(String [] args){

        int[] test={1,3,2,5,4};

        BubbleSort.sort(test);

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

            System.out.print(test[i]);

        }

    }

}

-------------------------------------------------------------------------

2.选择排序

/**

 * Created by 737597978 on 2015/4/8.

 */

public class SelectSort {


    public static int[] sort(int[] array) {


        for (int i = 0; i < array.length - 1; i++) {

            int min = i;

            for (int j = i + 1; j < array.length; j++) {

                if (array[j] < array[min]) {

                    min = j;

                }

            }

            swap(i, min, array);

        }

        return array;

    }


    private static void swap(int i, int min, int[] array) {

        int temp = array[i];

        array[i] = array[min];

        array[min] = temp;

    }



    public static void main(String[] args) {

        int[] test = {7, 1, 4, 5, 9, 8};

        SelectSort.sort(test);

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

            System.out.print(test[i]);

        }

    }

}

-----------------------------------------------------------------------------------------

3.插入排序

/**

 * Created by 737597978 on 2015/4/8.

 */

public class InsertSort {


    public static int [] sort(int array[]){

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

            int temp=array[i];

            int inner=i;

            while (inner>0&&array[inner-1]>=temp){

                array[inner]=array[inner-1];

                --inner;

            }

            array[inner]=temp;

        }

        return array;

    }

    public static void main(String [] args){

        int[] test={3,2,4,5,7,1};

        InsertSort.sort(test);

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

            System.out.print(test[i]);

        }

    }

}

----------------------------------------------------------------------------------------------------

4.希尔排序

/**

 * Created by 737597978 on 2015/4/8.

 */

public class ShellSort {


    public static void sort(int[] array) {

        int inner, outer;

        int temp;

        int h = 1;

        while (h <= array.length / 3) {

            h = 3 * h + 1;

        }

        while (h > 0) {

            for (outer = h; outer < array.length; outer++) {

                temp = array[outer];

                inner = outer;

                while (inner > h - 1 && array[inner - h] >= temp) {

                    array[inner] = array[inner - h];

                    inner -= h;

                }

                array[inner] = temp;

            }

            h = (h - 1) / 3;

        }

    }


    public static void main(String[] args) {

        int[] test = {2, 3, 4, 1, 5};

        ShellSort.sort(test);

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

            System.out.print(test[i]);

        }

    }

}

----------------------------------------------------------------------------------------------

5.快速排序

/**

 * Created by 737597978 on 2015/4/9.

 */

public class QuickSort {


    private static int[] chaosAarray = {2, 3, 7, 1, 5};


    public static void sort(int left, int right) {

        if (right <= left) {

            return;

        } else {

            int pivot = chaosAarray[right];

            int partition = partitionIt(left, right, pivot);

            sort(left, partition - 1);

            sort(partition + 1, right);

        }

    }

    public static int partitionIt(int left, int right, int pivot) {

        int leftPtr = left - 1;

        int rightPtr = right;

        while (true) {

            while (chaosAarray[++leftPtr] < pivot) ;

            while (rightPtr > 0 && chaosAarray[--rightPtr] > pivot) ;

            if (leftPtr >= rightPtr) {

                break;

            } else {

                swap(leftPtr, rightPtr);

            }

        }

        //调整枢纽值在数组中的位置  将枢钮值跟数组最右边的值对换

        swap(leftPtr, right);

        return leftPtr;

    }


    public static void swap(int leftPtr, int rightPtr) {

        int temp = chaosAarray[rightPtr];

        chaosAarray[rightPtr] = chaosAarray[leftPtr];

        chaosAarray[leftPtr] = temp;

    }


    public static void main(String[] args) {

        QuickSort.sort(0, chaosAarray.length - 1);

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

            System.out.print(chaosAarray[i]);

        }

    }


}


© 著作权归作者所有

wangjinzhao
粉丝 1
博文 11
码字总数 2267
作品 0
海淀
高级程序员
私信 提问
java排序之快速排序、归并排序、基数排序

前两篇说了Java排序中的冒泡、选择、插入、希尔等排序算法,今天就探讨一下剩下的三种常用排序。 快速排序: 当要求时间最快时,就可以用快速排序算法。 选择第一个数为p,小于p的数放在左边...

野小疯
2018/06/05
46
0
面试 13:基于排序算法的总结

浑浑噩噩,我们前面已经讲解了冒泡、插入、选择、归并、快排 5 种排序算法,其他的由于时间关系,我们就不一一例举了。 说到排序,不得不想到我们 JDK 中自带的 和 方法。这两个方法基本算是...

nanchen2251
2018/07/25
0
0
输入排序算法的名字与待排序的数据列可完成数据排序?

拜托各位大神了 1.通过程序实现排序算法,算法支持冒泡排序、插入排序、希尔选择,且可扩展算法。只需要输入排序算法的名字与待排序的数据列表即可完成数据排序; 三个算法的代码写出来了,后...

禧禧的禧
2014/06/07
111
0
去腾讯面试,让做了几道JAVA笔试题,做对就给30K,邀你来战!

前几天去腾讯面试,让做一道JAVA笔试题,今天给大家整理了下。不知道我总结得对不,欢迎有不同的声音。 1、说几种常见的攻击方式及预防手段。 XSS/CSRF/DDOS,后面啥来着? 2、http1.x和htt...

爱编程厨师
02/12
0
0
JAVA中运用数组的四种排序方法

JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法、冒泡法、选择排序法、插入排序法。 快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现。 冒泡法是运用遍历数组进...

IceRainYWC
2014/03/17
26
0

没有更多内容

加载失败,请刷新页面

加载更多

哪些情况下适合使用云服务器?

我们一直在说云服务器价格适中,具备弹性扩展机制,适合部署中小规模的网站或应用。那么云服务器到底适用于哪些情况呢?如果您需要经常原始计算能力,那么使用独立服务器就能满足需求,因为他...

云漫网络Ruan
今天
10
0
Java 中的 String 有没有长度限制

转载: https://juejin.im/post/5d53653f5188257315539f9a String是Java中很重要的一个数据类型,除了基本数据类型以外,String是被使用的最广泛的了,但是,关于String,其实还是有很多东西...

低至一折起
今天
23
0
OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
11
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
9
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部