原文:浅入浅出数据结构(20)——快速排序

正如上一篇博文所说,今天我们来讨论一下所谓的 高级排序 快速排序。首先声明,快速排序是一个典型而又 简单 的分治的递归算法。 递归的威力我们在介绍插入排序时相比已经见识过了:只要我前面的队伍是有序的,我就可以通过向前插队来完成 我的排序 ,至于前面的队伍怎么有序 递归实现,我不管。 递归就是如此 简单 的想法:我不管需要的条件怎么来的,反正条件的实现交给 递归的小弟们 去做,只要有基准情形并且向 ...

2017-09-21 20:33 0 1626 推荐指数:

查看详情

数据结构(18)——希尔排序

  在上一篇博文中我们提到:要令排序算法的时间复杂度低于O(n2),必须令算法执行“远距离的元素交换”,使得平均每次交换减少不止1逆序数。   而希尔排序就是“简单地”将这个道理应用到了插入排序中,将插入排序小小的升级了一下。那么,希尔排序是怎么将这个道理应用于插入排序的呢?我们先来回顾一下 ...

Wed Sep 20 00:21:00 CST 2017 1 996
数据结构(23)——图的概念、存储方式与拓扑排序

  到目前为止,我们所提过的所有数据结构,不是线性表,就是树。即使是散列表、优先队列、AVL树这样看似特殊的数据结构,其实也没逃出线性表与树的范畴,那么,在数据结构方面(如果是说算法方面,那么与线性表、树相关的算法可讲不完),还有什么我们尚未探讨的情况吗?   答案是肯定的,那就是:图 ...

Thu Feb 08 22:52:00 CST 2018 0 1521
数据结构(6)——游标数组及其实现

  在前两次博文中,我们由线性表讲到数组,然后又由数组的缺陷提出了指针式链表。但是指针式链表也不是完美无缺的,在某些没有指针数据类型的编程语言中,指针式链表是无法由我们来实现的,但是有时候我们又希望能用上链表,因为链表可以快速的进行插入和删除。这个时候我们就可以使用一种由数组来实现的“链表 ...

Sun Apr 02 08:49:00 CST 2017 0 1844
数据结构(10)——树的简介

  到目前为止,我们一直在谈论的数据结构都是“线性结构”,不论是普通链表、栈还是队列,其中的每个元素(除了第一个和最后一个)都只有一个前驱(排在前面的元素)和一个后继(排在后面的元素),但是在(9)中,我们发现有的时候“线性结构”是不能满足我们的需求的,必然存在某些场景需要我们使用非线性的数据结构 ...

Fri Jul 28 09:04:00 CST 2017 0 3355
数据结构(9)——多重表(广义表)

  在深入数据结构系列前面的文章中,我们一直在讨论“线性表”,其形式如下:   由a1,a2,a3,……a(n-1)个元素组成的序列,其中每一个元素ai(0<i<n)都是一个“原子”,“原子”的意思就是说元素本身是一个个体,所有元素都是相同的结构。   但是在我们常见 ...

Tue May 23 01:14:00 CST 2017 0 2054
数据结构(七)排序---快速排序

一:基本思想 二:图解实现过程 三:代码实现 四:快速排序优化 (一)优化选取枢轴 改进方法 ...

Wed Aug 22 18:01:00 CST 2018 0 1837
JAVA数据结构--快速排序

快排概念 快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),一种排序算法,最早由东尼·霍尔提出。在平均状况下,排序个项目要(大O符号)次比较。在最坏状况下则需要次比较,但这种状况并不常见。事实上,快速排序通常明显比其他算法更快 ...

Wed Dec 13 23:33:00 CST 2017 1 955
数据结构 快速排序

  快速排序是对冒泡排序的一种改进,是所有内部排序算法中平均性能最优的排序算法。其基本思想是基于分治法的:在待排序数组L[1...n]中任取一个元素pivot作为基准,从数组的两端开始扫描。设两个指示标志(low指向起始位置,high指向末尾),先从后向前扫描(high递减),如果high位置 ...

Wed Jan 24 17:59:00 CST 2018 0 4942
 
粤ICP备18138465号  © 2018-2026 CODEPRJ.COM