面试官:“ 先手写一个快速排序吧!”
最近整理了一些排序算法,并记录下实现过程!作为备忘笔记。主要有:快速排序、堆排序、归并排序、插入排序、冒泡排序、选择排序等。
前言
- 算法是程序的灵魂。无论程序多么的复杂,只要我们能够抓住程序的主要“矛盾”,就能够适时地解决这些问题,而算法就是其主要矛盾。
- 排序算法是算法的基础。我们需要学习算法,就必然需要打好自己学习的基石,排序算法作为最基本易懂的算法,我们不精通它又怎么能驾驭得了其他高级算法呢?
- C 语言:本文选择
C
作为实现语言,主要是本人在看Linux
下的 C 编程一书,于是就顺便直接在 Linux 系统下开写了!我想 C 语言是每个人都能看得懂的语言,并且其特殊性很少,几乎完全能转化为其他各式语言 (Java
,Php
,Python
等 ),因此这也是 C 的好处。
排序算法说明
一、快速排序 / FastSort
快速排序是 C.R.A.Hoare 于 1962 年提出的一种划分交换排序方法,其核心是分治法。
实现过程:
从数列中选取一个作为 基准数 ( 不妨就选第一个,通常也都是选择第一个 );然后进行分区,将比它小的数放在它左边,比其大的则放在右边;然后对 左右区间进行相同操作 ( 也就是递归 ),直到各个区间只剩一个数。