好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

算法篇-算法基础4

常用算法集锦:

之前介绍了效率不高的low B三人组算法篇-算法基础3,这次来看看NB三人组!

一、快排

简介

快速排序(Quicksort)是对冒泡排序的一种改进。

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

1、思路:1、取一个元素p(第一个元素),是元素p归位(去它该去的地方);

     2、列表被p分成两部分,左边的都比p小,右边的都比p大;

     3、递归完成排序

2、算法关键点

归位

递归

二、堆排序 0.简介

堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。

1、堆排序过程:

1、建立堆

2、得到堆顶元素,为最大元素

3、去掉堆顶,将堆最后一个元素放在堆顶,此时可通过一次调整重新使堆有序

4、堆顶元素为第二大元素

5、重复步骤3,直到堆变空

三、归并排序

0.简介

归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。

1、 假设现在的列表分两段有序,如何将其合成为一个有序列表。这种操作称为一次归并

2、归并关键字

分解:将列表越分越小,直至分成一个元素

终止条件:一个元素是有序的

合并:将两个有序列表归并,列表越来越大

查看更多关于算法篇-算法基础4的详细内容...

  阅读:32次