zoukankan      html  css  js  c++  java
  • Java 冒泡排序与快速排序的实现

    冒泡排序

         基本特点

          (1)基于交换思想的排序算法
            (2)从一端开始,逐个比较相邻的两个元素,发现倒序即交换。
              (3)一次遍历,一定能将其中最大(小)的元素交换到其最终位置上

        排序过程模拟

        

        代码实现

    static void Bubble_Sort(int array[]){
            for(int i=0;i<array.length;i++)
            {
                for(int j=0;j<array.length-i-1;j++)
                {
                    if(array[j]<array[j+1])
                    {
                        int temp=array[j];
                        array[j]=array[j+1];
                        array[j+1]=temp;
                    }
                }
                System.out.print("第"+(i+1)+"次排序的结果:");
                for(int c=0;c<array.length;c++)
                {
                    System.out.print(array[c]+"	");
                }
                System.out.println();
            }
            
        
            System.out.print("最终排序结果:");
            for(int c=0;c<array.length;c++){
                System.out.print(array[c]+"	");
            }
        }

           

    快速排序

      基本思想

         选定一个元素作为中间元素,然后将表中所有元素与改中间元 素相比较,将表中比中间元素小的元素调到表的前面,将比中间元素大的元素 调到后面,再将中间元素放在

         这两部分之间以作为分界点,这样便得到一个划分。 然后再对左右两部分分别进行快速排序,直到每个子表仅有一个元素或为空表为止。

      划分方法

          1.中间元素的选择:作为参考点的中间数的选择没有特别的规定, 本次默认为第一个元素。

          2.中间元素所占空间可能被其他元素占用,为此,可先保存该元素的值到其他位置以腾出起空间。

          3.这样,前面便有一个空位置(i),可从最后面开始往前搜索一个比中间数大的元素,并将其放置到后面的这个位置上。

                 4.此刻,后面便有了一个空位置(j),可从前面开始往后搜索一个比中间数小的元素,并将其放置到前面的位置。4.重复1 2 ,直到两边搜索的空位重合(i=j)。

      排序过程模拟

         

      代码实现

    static int partition(int array[],int start,int end){
            int temp=array[start];
            int i=start;
            int j=end-1;
            while(i!=j){
                while(i<j&&array[j]>temp){
                    j--;
                }
                if(i<j){
                    array[i]=array[j];
                    i++;
                }
                while(i<j&&array[i]<temp){
                    i++;
                }
                if(i<j){
                    array[j]=array[i];
                    j--;
                }
                
            }
            array[i]=temp;
            return i;    
        }
        
        static void QuickSort(int a[],int s,int e){
            if(s<e){
                int i=partition(a, s, e );
                QuickSort(a, s,i-1);
                QuickSort(a, i+1, e);
            }
            
        }

         

         

    作者:Rekent
    出处:http://www.cnblogs.com/rekent/
    本文版权归作者和博客园共有,欢迎转载、点赞,但未经作者同意必须保留此段申明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。

  • 相关阅读:
    DO语句与SELECT语句,HANDLER语句
    Mysql 删除语句
    Mysql 调用存储过程的两种方式
    Mysql tablespace
    忘记Mysql登录密码
    Mysql 全文索引
    Mysql手册—SQLStatementSyntax
    Mysql手册—基本规范与数据类型
    Mysql常用函数列举
    真三 典伟的帅气
  • 原文地址:https://www.cnblogs.com/rekent/p/6883050.html
Copyright © 2011-2022 走看看