常用算法集͵��,���锦:
之前介绍了效率不高的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、归并关键字
分解:将列表越分越小,直至分成一个元素
终止条件:一个元素是有序的
- 合并:将两个有序列表归并,列表越来越大