`
bbsunchen
  • 浏览: 231793 次
  • 性别: Icon_minigender_1
  • 来自: 天朝帝都
社区版块
存档分类
最新评论

算法修炼之道:快速排序的C++实现算法导论版

阅读更多

MIT的课程,今天实现了个快速排序,开始的时候理解错了,晕死

这个代码写起来挺快的,而且速度也是排序里面算是很快很快的了,所以叫做快速排序么:

快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

 

#include <iostream>
using namespace std;
int a[10] = {32, 21, 67, 11, 5, 43, 99, 18, 22, 87};

void quickSort(int p, int q)
{
	if(p < q)
	{
		int x = a[p];
		int i = p;
		for(int j = p+1; j < q; j++)
		{
			if(a[j] < x)
			{
				i++;
				int temp = a[i];
				a[i] = a[j];
				a[j] = temp;
			}
		}
		int temp = a[p];
		a[p] = a[i];
		a[i] = temp;
		quickSort(p, i);
		quickSort(i+1, q);
	}
}

int main()
{
	quickSort(0, 10);
	for(int i = 0; i < 10; i++)
	{
		cout << a[i] << " ";
	}
	cout << endl;
}

 个人感觉网上的代码没有我写的那么容易理解吧,嘿嘿,得到大师真传,自信一下~~

2
1
分享到:
评论
2 楼 bbsunchen 2010-07-13  
回归蔚蓝 写道
!-_- 快吗?

时间复杂度,平均情况O(nlgn),最好情况O(nlgn),最坏情况O(n^2),最坏情况出现在序列已经排好或者序列完全逆序的时候,这种情况可以通过随机选取切割位点来避免,不快么?
同时,其空间复杂度O(n),不占用多余内存
另外,这应该是平均时间复杂度为O(nlgn)的算法中,代码量最少的算法了吧?
1 楼 回归蔚蓝 2010-07-13  
!-_- 快吗?

相关推荐

    Verilog/C++实现排序算法:Verilog/C++实现排序算法:冒泡排序、选择排序、并行全比较排序、串行全比较排序

    本文将探讨如何使用这两种语言实现几种基本的排序算法:冒泡排序、选择排序,以及两种全比较排序(并行和串行)。 首先,让我们了解一下排序算法。排序是计算机科学中最基础的操作之一,它涉及到将一组数据按照特定...

    C++语言的算法实现包括插入排序冒泡排序堆排序快速排序

    本文将深入探讨四种在C++中实现的常见排序算法:插入排序、冒泡排序、堆排序和快速排序。这些算法各有特点,适用于不同的场景,理解并掌握它们对于提升编程能力至关重要。 1. **插入排序**: 插入排序是一种简单的...

    快速排序算法c++实现

    C++是面向对象的编程语言,它提供了丰富的库支持和高效的语言特性,非常适合实现各种算法,包括快速排序。在C++中实现快速排序,通常需要以下步骤: 1. **选择基准元素**:可以随机选取数组中的一个元素作为基准,...

    读书笔记:算法导论C++实现.zip

    读书笔记:算法导论C++实现

    高级算法设计实验4:快速排序

    2、熟练使用高级编程语言实现不同的快速排序算法。 3、利用实验测试给出不同快速排序算法的性能以理解其优缺点。 快速排序是算法导论中的经典算法。在本实验中,给定一个长为 n 的整数数 组,要求将数组升序排序。

    [电子教案]算法设计与分析:C++语言描述(第2版).rar

    其中,排序算法如冒泡排序、选择排序、插入排序、快速排序、归并排序以及堆排序等,是基础且重要的部分,它们不仅在理论上有研究价值,而且在实际应用中有着广泛的应用。搜索算法如二分查找、广度优先搜索(BFS)和...

    算法导论第三版各种排序算法的c/c++实现

    请参考算法导论第三版英文版Introduction to Algorithms 3rd Edition,本程序为第一章到第八章重要排序等算法的c/c++实现。IDE环境为vc++ 6.0。函数名称与算法导论原文类似。 主要包括: 直接选择排序 归并排序 堆...

    C++:快速排序算法

    快速排序是一种高效的排序算法,由英国计算机科学家C.A.R. Hoare在1960年提出。它的基本思想是分治策略,即将一个大问题分解为小问题来解决。快速排序的主要步骤包括选择一个基准元素、划分数组以及递归排序子数组。...

    排序算法之堆排序算法:用C++语言实现堆排序算法

    标题"排序算法之堆排序算法:用C++语言实现堆排序算法",意味着我们将讨论如何用C++编程语言来实现堆排序的过程。C++是面向对象的编程语言,具有丰富的库支持和高效的执行性能,是实现算法的理想选择。 描述"排序...

    7种常用排序算法实现(C++)(冒泡排序、选择排序、直接插入排序、希尔排序、堆排序、归并排序以及快速排序)

    这七种算法分别是:冒泡排序、选择排序、直接插入排序、希尔排序、堆排序、归并排序和快速排序。 1. **冒泡排序**: 冒泡排序是最基础的排序算法之一,通过重复遍历待排序序列,比较相邻元素并交换位置来实现排序...

    算法设计、分析与实现从入门到精通(徐子珊):C、C++和Java.pdf

    《算法设计、分析与实现:c、c++和java》特色是按照算法之间逻辑关系编排学习顺序,并对每一个经典算法,都给出了完整的c/c++/java三种主流编程语言的实现程序,是一本既能让读者清晰、轻松地理解算法思想,又能让...

    C++实现希尔、快速、堆排序、归并排序算法

    本文将详细介绍C++中实现的希尔排序、快速排序、堆排序和归并排序这四种经典排序算法。 希尔排序,由Donald Shell于1959年提出,是一种改进的插入排序。它的基本思想是通过设置一个增量序列,将待排序的元素按照...

    算法导论用C++实现代码

    快速排序和归并排序是效率较高的排序算法,它们在C++中的实现通常涉及递归和指针操作。 3. **搜索算法**:包括线性搜索、二分搜索、深度优先搜索(DFS)和广度优先搜索(BFS)。二分搜索适用于有序数组,而DFS和BFS...

    算法导论中堆排序c++源程序

    算法导论上的堆排序c++源程序||学习分享

    各种主要排序算法的C++实现

    在IT领域,排序算法是计算机科学中的基础但至关重要的部分,尤其在编程语言如C++中,理解并能熟练运用各种排序算法对于提升程序效率至关重要。以下是对标题和描述中涉及的主要排序算法的详细解释: 1. **插入类排序...

    数据结构与算法:快速排序算法原理与实现

    使用场景及目标:适用于需要深入理解快速排序算法原理、掌握快速排序实现方法的学习者。通过学习本文,读者可以了解快速排序的基本原理、性能分析及实际应用,从而提高编程技能和算法设计能力。 其他说明:本文不仅...

    《数据结构课设》快速排序C++实现

    C++中的标准模板库(STL)虽然提供了sort函数,但理解并实现快速排序算法有助于深入理解排序过程。 快速排序的主要步骤包括: 1. **选择基准**:从待排序的数组中选择一个元素作为基准,通常选择第一个或最后一个...

    毕业设计:基于C++的AP聚类算法设计与实现.zip

    毕业设计:基于C++的AP聚类算法设计与实现 毕业设计:基于C++的AP聚类算法设计与实现 毕业设计:基于C++的AP聚类算法设计与实现 毕业设计:基于C++的AP聚类算法设计与实现 毕业设计:基于C++的AP聚类算法设计与实现 ...

    常见排序算法C++实现

    这里我们将深入探讨标题中提到的五种排序算法——归并排序、快速排序、希尔排序、插入排序和选择排序,以及它们在C++中的实现。 1. **归并排序**: 归并排序是一种基于分治策略的排序算法。它将大问题分解为小问题...

Global site tag (gtag.js) - Google Analytics