JAVA 几种排序算法(附)动画演示

原创 2018年04月15日 16:31:37
几种排序算法的属性对比

这里写图片描述

一、冒泡排序

特点:效率低,实现简单
原理:将待排序列中最大的数往后冒泡,成为新的序列,重复以上操作直到所有元素排列完成

public class PaiXu {

    public static void main(String []args) {

        maoPao(a);
    }

    /**
    *冒泡排序
    */
    public static void maoPao(int []array){
        int temp;//交换数据
        System.out.println("\n冒泡排序:");
        for(int i=1;i<array.length;i++) {   //只需要比较数组元素个数减一次
            for(int j=0;j<array.length-1;j++) {
                if(array[j]>array[j+1]) {
                    temp=array[j];
                    array[j]=array[j+1];
                    array[j+1]=temp;
                }
            }
            System.out.print("第"+i+"次:");
            for(int i=0;i<array.length;i++) {
                System.out.print(array[i]+" ");
            }
            System.out.println();
        }
    }

这里写图片描述

二、选择排序

特点:效率低,容易实现。
原理:每一趟从待排序序列选择一个最小的元素放到已排好序序列的首位,剩下的位待排序序列,重复上述步骤直到完成排序。

    /**
    *选择排序
    */
    public static void xuanZe(int []array) {
        int index,temp;
        System.out.println("\n选择排序:");
        for(int i=0;i<array.length-1;i++) {
            index=i;//用来记住数组元素的下标
            for(int j=i+1;j<array.length;j++) {
                if(array[index]>array[j]) {
                    index=j;//只对index值改变,不交换元素位置
                }
            }
            if(i!=index) {
                temp=array[index];
                array[index]=array[i];
                array[i]=temp;
            }//一轮排序进行一次数组位置交换
            System.out.print("第"+i+"次:");
            for(int i=0;i<array.length;i++) {
                System.out.print(array[i]+" ");
            }
            System.out.println();
        }
    }

这里写图片描述

有的人在排序时一遇到比已选择的元素大的元素就进行交换,这样交换的次数太多
以上方法采用的是记录该元素的下标,最终只需要将该下标指向的元素和需交换的元素交换即可,这样一轮排序只需要交换一次数组元素的位置

插入排序

特点:效率低,容易实现。
原理:将数组分为两部分,将后部分元素逐一插入前部分有序元素的适当位置

    /**
    *插入排序
    */
    public static void chaRu(int []array) {
        int temp;
        System.out.println("\n插入排序:");
        for(int i=1;i<array.length;i++) {
            int j=i;
            temp = array[i];
            while( j>0 && temp < array[j-1]) {
                array[j] = array[j-1];
                j--;
            }
            array[j] = temp;
            System.out.print("第"+i+"次:");
            show(array);
        }
    }

这里写图片描述

快速排序

特点:高效,时间复杂度为nlogn。
原理:采用分治法的思想:首先设置一个中间值,然后以这个中间值为划分基准将待排序序列分成比该值大和比该值小的两部分,将这两部分再分别进行快速排序
直到序列只剩下一个元素

/**快速排序
     * */
    public static void kuaiSu(int []array,int left,int right){
        if(left < right) {
            int i=left,j=right;
            int pivot = array[left];//选择最左边的元素作为中间值

        /**
         * 分治
         */
        while(i < j) {
            while(i < j && array[j] >= pivot) {
                j--;
            }
            if(i < j) {
                array[i] = array[j];
                i++;
            }
            while(i < j&& array[i] < pivot){
                i++;
            }
            if(i < j) {
                array [j] =array [i];
                j--;
            }
        }
        array [i]=pivot;
        //递归
        kuaiSu(array,left,i-1);
        kuaiSu(array,i+1,right);
        }
    }

这里写图片描述

版权声明:本文为 清风丿自来 原创文章,未经允许不得转载。 https://blog.csdn.net/qq_39098813/article/details/79950444

java几种基本排序(动态演示)

  • 2010年09月04日 17:51
  • 42KB
  • 下载

超级详细解读基本排序算法(不看后悔,带排序演示动画)

排序与我们日常生活中息息相关,比如,我们要从电话簿中找到某个联系人首先会按照姓氏排序、买火车票会按照出发时间或者时长排序、买东西会按照销量或者好评度排序、查找文件会按照修改时间排序等等。在计算机程序设...
  • litong09282039
  • litong09282039
  • 2015-06-02 16:53:42
  • 7608

各种排序算法动画演示

  • 2011年11月29日 18:38
  • 198KB
  • 下载

JavaScript排序算法动画演示效果实现

JavaScript排序算法动画演示效果实现。冒泡排序、插入排序、选择排序、快速排序、归并排序、希尔排序动画演示。 实现过程。...
  • liusaint1992
  • liusaint1992
  • 2016-06-13 11:29:40
  • 3772

13种排序算法详解(相当清楚,还附有flash动画)

0、前言      从这一部分开始直接切入我们计算机互联网笔试面试中的重头戏算法了,初始的想法是找一条主线,比如数据结构或者解题思路方法,将博主见过做过整理过的算法题逐个分析一遍(博主当年自己学算法...
  • u013068377
  • u013068377
  • 2014-09-18 09:47:11
  • 4766

java实现合并排序算法

前言   合并排序是分治法当中一个经典的排序算法,它通过将规模为n的原始问题分解为n/2,然后得到各自的解后,在合并两个子问题的解,最终得到原始问题的解。合并排序属于稳定排序,在排序过程中,如果遇...
  • HJXASLZYY
  • HJXASLZYY
  • 2018-04-06 17:43:39
  • 280

从头说12种排序算法:原理、图解、动画视频演示、代码以及笔试面试题目中的应用 .

从这一部分开始直接切入我们计算机互联网笔试面试中的重头戏算法了,初始的想法是找一条主线,比如数据结构或者解题思路方法,将博主见过做过整理过的算法题逐个分析一遍(博主当年自己学算法就是用这种比较笨的刷题...
  • caojunhao123
  • caojunhao123
  • 2013-09-29 17:55:30
  • 2242

在线动画演示各种排序算法过程

http://www.atool.org/sort.php
  • oLevin
  • oLevin
  • 2016-08-08 16:13:06
  • 404

合并排序算法的演示

  • 2012年11月04日 07:20
  • 14KB
  • 下载

各种经典排序算法演示,非常值得一看

各种经典排序算法
  • u010769276
  • u010769276
  • 2014-11-04 13:35:46
  • 614
收藏助手
不良信息举报
您举报文章:JAVA 几种排序算法(附)动画演示
举报原因:
原因补充:

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