`
cuiyaoonan2000
  • 浏览: 25674 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java:快速排序算法与冒泡排序算法

阅读更多

 

Java:快速排序算法与冒泡算法

 

首先看下,冒泡排序算法与快速排序算法的效率:

 

 

 

 

 

      /**

        *

       * @Description:

       * @author:cuiyaonan2000@163.com

       * @date 2014115日 下午1:00:32

        */

 public static void main(String[] args) {

 

           //快速排序算法测试

 

           int[] qArray = newint[100000];

 

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

 

                 qArray[i] = (int) (Math.random() * 100000);

 

           }

 

           long beforeQ = System.currentTimeMillis();

 

           quickSort(qArray, 0, qArray.length-1);

 

           System.out.println("快速排序运行时间:" + (System.currentTimeMillis() - beforeQ));

 

          

 

           //冒泡排序算法测试

 

           int[] bArray = newint[100000];

 

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

 

                 bArray[i] = (int) (Math.random() * 100000);

 

           }

 

           long beforeB = System.currentTimeMillis();

 

           bubble(bArray);

 

           System.out.println("冒泡排序运行时间:" + (System.currentTimeMillis() - beforeB));

 

      }

 

 

 

 

 

 

在一个有100000 个数字的数组中排序结果如下:



 

 

 

如下的是大家耳熟能详的冒泡算法(关于冒泡就不多说了):

 

      /**

        *

       * @Description:

       * @author:cuiyaonan2000@163.com

       * @date 2014115日 下午1:00:32

        */

       public static void bubble(int[] data) {

 

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

 

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

 

                      if (data[i] > data[j]) {

 

                            int temp = data[j];

 

                            data[j] = data[i];

 

                            data[i] = temp;

 

                      }

 

           }

 

      }

 

 

 

 

 

 

先说下关于快速排序算法的思路:

 

 

 

  1. 选取数组第一个数字,作为key.并设置变量i0,j为数组长度.

  2. 从数组最后一位开始向前找,找什么呢?找比key小的数字(不能等于),并记录下坐标j.限制条件是,在向前找的过程中如果一直没找到比key小的数值,就在i<j的时候停止(如果没有找到j就做减一操作继续找).如果找到了就将 数组[j] 与数组[i]的值对换并结束.

  3. 从数组第一位开始向后找,找什么呢?找比key大的数字(不能等于),并记录下坐标i.限制条件是,在向前找的过程中如果一直没找到比key大的数值,就在i<j的时候停止(如果没有找到i就做加一操作继续找).如果找到了就将 数组[j] 与数组[i]的值对换并结束.

  4. 完成如上的操作,打印输出数组发现:数据变得相对有序了,就是在数组中key值坐标前面的都是小于key,key值坐标后面的都是大于key值得.

  5. 所以大家明白了:将以key值为坐标的数组拆分成2个数组,分别去执行123步骤操作,最终就会产生一个有序数组

 

      /**

        *

       * @Description:

       * @author:cuiyaonan2000@163.com

       * @date 2014115日 下午1:00:32

        */

 public static void quickSort(int[] array,int begin,int end){

 

           int theKey = array[begin];   //设置关键值

 

           int i = begin;

 

           int j = end;

 

           while(true){

 

                 while(i<j && array[j] >= theKey)   //从后面找到一个比关键之小的数字坐标

 

                      j--  ;

 

                 if(i<j){  //交换

 

                      int temp = array[j];

 

                      array[j] = array[i];

 

                      array[i] = temp;

 

                 }else{

 

                      break;

 

                 }

 

                 while(i<j && array[i] <= theKey)   //从前面找到一个比关键之大的数字坐标

 

                      i++;

 

                 if(i<j){ //交换

 

                      int temp = array[j];

 

                      array[j] = array[i];

 

                      array[i] = temp;

 

                 }else{

 

                      break;

 

                 }

 

           }

 

          

 

           if(--i > begin ){//这个表示一直找到 被拆分的数组中只有一个值.否则递归调用

 

                 quickSort(array,begin,i);

 

           }

 

           if(++j< end){ //这个表示一直找到 被拆分的数组中只有一个值.否则递归调用

 

                 quickSort(array,j,end);

 

           }

 

      }

 

  • 大小: 16 KB
分享到:
评论

相关推荐

    JAVA冒泡排序和快速排序算法

    本节将深入探讨两种常见的排序算法:冒泡排序和快速排序。 首先,我们来详细讲解冒泡排序。冒泡排序是一种简单直观的排序算法,它的基本思想是通过重复遍历待排序的数列,依次比较相邻元素并交换位置,使得较大的...

    Java冒泡排序算法

    ### Java冒泡排序算法知识点详解 #### 一、冒泡排序基本概念 冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是...

    java实现10种排序算法:选择排序、冒泡排序、插入排序、快速排序、归并排序

    java实现10种排序算法:选择排序、冒泡排序、插入排序、快速排序、归并排序、堆排序、希尔排序、桶排_sorting-algorithms

    排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序.mht

    排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序.mht

    详解Java常用排序算法-快速排序

    快速排序算法的时间复杂度为 O(nlogn),它的性能比冒泡排序和插入排序要好得多,特别是在大型列表上。 快速排序算法的优点: * 高效排序:快速排序算法的时间复杂度为 O(nlogn),使其在大型列表上的性能优于其他...

    java实现的4种排序算法(冒泡、快速、插入、选择)

    以下是根据标题和描述中提到的四种排序算法——冒泡排序、快速排序、插入排序和选择排序的详细说明。 **冒泡排序(BuddleSort)**: 冒泡排序是一种简单的交换排序,它通过重复遍历待排序的列表,比较相邻元素并...

    JAVA排序算法: 直接插入,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序

    本文将深入探讨Java编程语言中实现的七种主要排序算法:直接插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序以及归并排序。每种算法都有其独特性,适用于不同的场景和数据特性。 1. **直接插入排序**:...

    java算法,快速排序、冒泡排序、选择排序

    java算法,快速排序、冒泡排序、选择排序 快速排序文章:http://blog.csdn.net/yanwenyuan0304/article/details/51822361 冒泡排序文章:http://blog.csdn.net/yanwenyuan0304/article/details/51819045

    冒泡排序 算法(冒泡,选择,插入,数组排序)

    除了冒泡排序,代码还展示了其他两种经典的排序算法:选择排序和插入排序。 选择排序的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。...

    各种排序算法比较(java实现)

    本文将详细探讨标题所提及的几种排序算法:合并排序、插入排序、希尔排序、快速排序、冒泡排序以及桶排序,并结合Java语言的实现进行解析。 1. **合并排序(Merge Sort)**: 合并排序是一种基于分治策略的排序算法...

    java 8种排序算法

    在编程领域,排序算法是数据结构与算法学习中的重要组成部分,尤其在Java中,掌握各种排序算法对于优化程序性能至关重要。下面将详细讲解标题中提到的八种排序算法及其原理和实现。 1. **直接插入排序(直接选择...

    JAVA冒泡排序算法

    冒泡排序算法是一种基础的排序算法,通过重复遍历要排序的数列,比较相邻的两个数,如果前一个比后一个大,则将它们两个对调。每一轮遍历结束后,数列中的最大值就会“冒泡”到数列的末尾。简单来说,就是通过重复...

    Java排序算法练习:1.快速排序 2.归并排序 3.插入排序 4.冒泡排序 5.选择排序 6.堆排序

    这里我们将深入探讨标题和描述中提到的六种排序算法:快速排序、归并排序、插入排序、冒泡排序、选择排序以及堆排序。 1. **快速排序**:由C.A.R. Hoare在1960年提出,是一种高效的分治算法。快速排序的基本思想是...

    排序算法(JAVA语言):冒泡排序,插入排序,选择排序,归并排序,快速排序

    本篇文章将深入探讨五种常见的排序算法,并以Java编程语言为实现背景。这些算法包括冒泡排序、插入排序、选择排序、归并排序以及快速排序。 **冒泡排序**是一种基础的排序方法,它通过重复遍历数组,比较相邻元素并...

    Java各种排序算法代码.zip

    这个名为"Java各种排序算法代码.zip"的压缩包包含了一系列实现不同排序算法的Java源代码。排序算法是计算机科学中的基本概念,用于对一组数据进行排列。下面将详细讨论这些算法及其在Java中的实现。 1. 冒泡排序...

    Java排序算法实现:冒泡与选择排序示例代码

    Java排序算法实现主要涉及到两种经典的算法:冒泡排序和选择排序。这两种算法都是基于比较的排序方法,适用于小规模或教学目的的数据排序。 **冒泡排序(Bubble Sort)** 是一种简单直观的排序算法,其核心思想是...

    Java实现冒泡排序算法(源代码)

    ### Java实现冒泡排序算法详解 #### 一、冒泡排序概述 冒泡排序是一种基础且直观的排序算法,它的核心思想是通过一系列的比较与交换操作,将较大的元素逐步移动到序列的末端,如同气泡逐渐上升一样,因此得名冒泡...

    java冒泡排序java冒泡排序集锦方法!

    以上三个知识点总结了关于 Java 排序的一些基本应用,包括基础的冒泡排序算法、使用标准库 `Collections.sort()` 进行排序以及使用 `RuleBasedCollator` 实现国际化排序等。这些技术对于编写高效、可维护的 Java ...

Global site tag (gtag.js) - Google Analytics