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]
分享到:
相关推荐
快速排序由一个基准值(Pivot)划分,使得基准值左边的元素小于基准,右边的元素大于基准,然后递归地对左右两边的子序列进行快速排序。其平均时间复杂度同样是O(n log n),但最坏情况下为O(n^2),这通常发生在输入...
冒泡排序和快速排序是两种常见的排序算法,广泛应用于计算机科学和编程领域,尤其是在处理数据组织和优化效率的问题上。接下来我们将深入探讨这两种排序方法。 首先,我们来看冒泡排序。冒泡排序是一种简单直观的...
这个压缩包“10个数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等.zip”包含了多个与数据结构相关的项目,涵盖了二叉树、遍历算法、冒泡排序以及快速排序等关键主题。下面我们将深入探讨这些知识点。 首先,...
【算法之排序专题】本文主要探讨了排序算法,包括简单的排序算法和高级排序算法,特别提到了快速排序和二分法排序。排序算法在处理大量数据时扮演着关键角色,因此对算法效率的要求非常高。衡量算法效率的主要指标是...
- **算法优化**:考虑不同排序算法在特定情况下的表现,比如快速排序在数据接近有序或重复元素较多时性能下降,此时可以考虑使用其他算法或对快速排序进行优化。 - **算法选择**:根据数据规模和数据特性选择最合适...
标题中的“曹鹏SEO视频教程-09.google 排序思考”揭示了这是一段关于搜索引擎优化(SEO)的教程,特别聚焦于Google的搜索排名策略。SEO是互联网营销的重要组成部分,其目标是提高网站在搜索引擎结果页上的自然排名,...
4. **通用快速排序**:这部分介绍了一个基于模板的快速排序实现,它可以对任何数据类型进行排序。快速排序是一种高效的排序算法,平均时间复杂度为O(N log N),其核心是选取合适的“枢轴”元素来划分数组。 在编程...
本课程设计聚焦于“综合排序数据结构(C语言)”,旨在通过实践加深对不同排序算法的理解和掌握,包括但不限于插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序和归并排序。 ### 一、概要设计 #### 1.1 ...
- **思考题示例**:快速排序算法的平均时间复杂度是多少?如何证明? - **课后解答题示例**:给出一个具体的快速排序实例,并分析其运行过程。 - **第8章:线性时间排序** - **知识点**:探讨在特定条件下可以...
1.内部排序:使用8种内部排序算法(冒泡排序、插入排序、选择排序、希尔排序、快速排序、归并排序、基数排序、堆排序),对出版社信息按照指定关键字进行排序,分析其时空复杂度(在实验报告的总结与思考中会有相应...
4. **快速排序**:通过“分而治之”的策略,选择一个基准元素,将序列分为两部分,使得一部分元素小于基准,另一部分元素大于基准,然后对这两部分分别进行快速排序。 5. **选择排序**:每次从未排序的部分选取最小...
- **第7章:快速排序**:重点讲述快速排序算法的机制及其优化方法。 - **第8章:线性时间排序**:讨论基数排序、计数排序和桶排序等线性时间排序算法。 - **第9章:中位数与顺序统计量**:介绍如何有效地找到一个...
针对快速排序的`Partition`函数和直接插入排序的`InsertSort`函数,思考题要求补充代码实现细节。例如,在快速排序中,如何正确选择和移动枢轴,以及如何确保分区的正确性。在直接插入排序中,如何确定插入位置,...
- 习题7-9:可能要求学生分析快速排序算法的不同场景下的性能。 以上是根据给定信息对《算法导论》部分章节的习题和思考题答案的关键知识点进行的总结和解析。通过对这些习题的练习和思考,读者可以更深入地理解...
书中介绍了常见的数据结构如数组、链表、栈、队列、树和图,以及排序和搜索算法,如冒泡排序、快速排序、二分查找等。这些基础知识对提高代码性能至关重要。 此外,书中还强调了调试和测试的重要性。程序员需要学会...
1. **排序算法**:排序是数据处理的核心操作之一,常见的排序算法有冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序、希尔排序、计数排序、桶排序和基数排序等。每个算法都有其独特的思想和适用场景,如...
我们可以使用快速排序和综合排序两种方法来实现数据的排序。 1. 快速排序 快速排序是一种简单的排序方法。我们可以使用快速排序来对数据按照数字或文字的顺序进行排序。例如,我们可以对广州亚运会奖牌榜按照奖牌...
本文将探讨几种常见的排序算法,包括冒泡排序、选择排序以及更高效的排序算法如鸽巢排序、计数排序和快速排序。 首先,冒泡排序和选择排序是入门级的排序算法,它们的实现简单,但效率较低,时间复杂度为O(n^2)。...
快速排序是一种基于分治策略的高效排序算法,其基本思想是通过一趟排序将待排序列分割成独立的两部分,其中一部分的所有记录都比另一部分的所有记录小,则可分别对这两部分继续进行快速排序,以达到整个序列有序的...