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

快速排序的思考

阅读更多

1)快速排序的基本思想:

      设当前待排序的无序区为R[low......high],在R[low......high]中任选一个记录作为基准(Pivot),以此基准将当前无序区划分为左、右两个较小的子区间R[low..pivotpos-1)和R[pivotpos+1..high],并使左边子区间中所有记录的关键字均不大于基准,右边的子区间中所有记录的关键字均不小于基准。基准记录不参与下次排序,它已经处于排好位pivotpos。下次递归调用快速排序对左、右子区间R[low..pivotpos-1]和R[pivotpos+1..high]快速排序。

 2)具体代码:

     [code]

     package com.amplesky;

    public class QuickSort
   {


          public static void main(String[] args)
         {
                int [] a = {5,6,7,65,3,4,2,6,4,5};
                int low = 0;
                int heigh = a.length -1;
               quickSort(a,low,heigh);
               for (int i =0; i <= heigh ;i++)
               {
                     System.out.print(a[i]+"   "); 
               }
                System.out.println();

           }

 

           public static void quickSort(int a[], int low,int heigh)
          {
                 if( low >= heigh)
                {
                         return ;
                }
                int index = partion(a, low, heigh);
                quickSort(a,low, index -1);
                quickSort(a,index+1, heigh);
          }
 
        public static int partion(int a[], int low,int heigh)
       {
              int swap = a[low];
             while(low < heigh)
            {
                    while(low < heigh && a[heigh] >= swap)
                  {  
                          heigh -- ;
                  }
                   if(low < heigh)
                  {
                          a[low++] = a[heigh];
                  }
                  while(low < heigh && a[low] <= swap)
                  {
                          low ++ ;
                  }
                  if(low < heigh)
                  {
                         a[heigh--] = a[low];
                  }
         }
          a[low]= swap;
           return low;
      }
}

[/code]

 

分享到:
评论

相关推荐

    算法设计与分析-1排序算法性能分析-冒泡/选择/插入/合并/快速排序-pre ppt

    快速排序由一个基准值(Pivot)划分,使得基准值左边的元素小于基准,右边的元素大于基准,然后递归地对左右两边的子序列进行快速排序。其平均时间复杂度同样是O(n log n),但最坏情况下为O(n^2),这通常发生在输入...

    java冒泡排序和快速排序代码

    冒泡排序和快速排序是两种常见的排序算法,广泛应用于计算机科学和编程领域,尤其是在处理数据组织和优化效率的问题上。接下来我们将深入探讨这两种排序方法。 首先,我们来看冒泡排序。冒泡排序是一种简单直观的...

    10个数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等.zip

    这个压缩包“10个数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等.zip”包含了多个与数据结构相关的项目,涵盖了二叉树、遍历算法、冒泡排序以及快速排序等关键主题。下面我们将深入探讨这些知识点。 首先,...

    算法之排序专题 二分法排序等等

    【算法之排序专题】本文主要探讨了排序算法,包括简单的排序算法和高级排序算法,特别提到了快速排序和二分法排序。排序算法在处理大量数据时扮演着关键角色,因此对算法效率的要求非常高。衡量算法效率的主要指标是...

    排序代码段

    - **算法优化**:考虑不同排序算法在特定情况下的表现,比如快速排序在数据接近有序或重复元素较多时性能下降,此时可以考虑使用其他算法或对快速排序进行优化。 - **算法选择**:根据数据规模和数据特性选择最合适...

    曹鹏SEO视频教程-09.google 排序思考.rar

    标题中的“曹鹏SEO视频教程-09.google 排序思考”揭示了这是一段关于搜索引擎优化(SEO)的教程,特别聚焦于Google的搜索排名策略。SEO是互联网营销的重要组成部分,其目标是提高网站在搜索引擎结果页上的自然排名,...

    排序算法 各种算法的综合

    4. **通用快速排序**:这部分介绍了一个基于模板的快速排序实现,它可以对任何数据类型进行排序。快速排序是一种高效的排序算法,平均时间复杂度为O(N log N),其核心是选取合适的“枢轴”元素来划分数组。 在编程...

    综合排序 数据结构(C语言)

    本课程设计聚焦于“综合排序数据结构(C语言)”,旨在通过实践加深对不同排序算法的理解和掌握,包括但不限于插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序和归并排序。 ### 一、概要设计 #### 1.1 ...

    算法导论思考题和课后解答题答案

    - **思考题示例**:快速排序算法的平均时间复杂度是多少?如何证明? - **课后解答题示例**:给出一个具体的快速排序实例,并分析其运行过程。 - **第8章:线性时间排序** - **知识点**:探讨在特定条件下可以...

    综合排序系统课程设计(C++实现,有内部排序和外部排序)

    1.内部排序:使用8种内部排序算法(冒泡排序、插入排序、选择排序、希尔排序、快速排序、归并排序、基数排序、堆排序),对出版社信息按照指定关键字进行排序,分析其时空复杂度(在实验报告的总结与思考中会有相应...

    排序算法比较.pdf

    4. **快速排序**:通过“分而治之”的策略,选择一个基准元素,将序列分为两部分,使得一部分元素小于基准,另一部分元素大于基准,然后对这两部分分别进行快速排序。 5. **选择排序**:每次从未排序的部分选取最小...

    算法导论课后习题与思考题答案合集

    - **第7章:快速排序**:重点讲述快速排序算法的机制及其优化方法。 - **第8章:线性时间排序**:讨论基数排序、计数排序和桶排序等线性时间排序算法。 - **第9章:中位数与顺序统计量**:介绍如何有效地找到一个...

    数据结构:交换排序-冒泡排序实验指导

    针对快速排序的`Partition`函数和直接插入排序的`InsertSort`函数,思考题要求补充代码实现细节。例如,在快速排序中,如何正确选择和移动枢轴,以及如何确保分区的正确性。在直接插入排序中,如何确定插入位置,...

    算法导论课后习题与思考题答案

    - 习题7-9:可能要求学生分析快速排序算法的不同场景下的性能。 以上是根据给定信息对《算法导论》部分章节的习题和思考题答案的关键知识点进行的总结和解析。通过对这些习题的练习和思考,读者可以更深入地理解...

    像程序员一样思考pdf

    书中介绍了常见的数据结构如数组、链表、栈、队列、树和图,以及排序和搜索算法,如冒泡排序、快速排序、二分查找等。这些基础知识对提高代码性能至关重要。 此外,书中还强调了调试和测试的重要性。程序员需要学会...

    数据结构课程设计——排序综合课程设计

    1. **排序算法**:排序是数据处理的核心操作之一,常见的排序算法有冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序、希尔排序、计数排序、桶排序和基数排序等。每个算法都有其独特的思想和适用场景,如...

    数据排序与筛选.ppt

    我们可以使用快速排序和综合排序两种方法来实现数据的排序。 1. 快速排序 快速排序是一种简单的排序方法。我们可以使用快速排序来对数据按照数字或文字的顺序进行排序。例如,我们可以对广州亚运会奖牌榜按照奖牌...

    C语言中算法的思考与讨论

    本文将探讨几种常见的排序算法,包括冒泡排序、选择排序以及更高效的排序算法如鸽巢排序、计数排序和快速排序。 首先,冒泡排序和选择排序是入门级的排序算法,它们的实现简单,但效率较低,时间复杂度为O(n^2)。...

    《数据结构》中有关排序算法的教学研究

    快速排序是一种基于分治策略的高效排序算法,其基本思想是通过一趟排序将待排序列分割成独立的两部分,其中一部分的所有记录都比另一部分的所有记录小,则可分别对这两部分继续进行快速排序,以达到整个序列有序的...

Global site tag (gtag.js) - Google Analytics