算法篇-算法基础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、归并关键字
-
分解:将列表越分越小,直至分成一个元素
-
终止条件:一个元素是有序的
- 合并:将两个有序列表归并,列表越来越大
- PHP四种基础算法详解
- 算法结构与设计基础作业第九周
- 算法基础——插入排序
- 程序员必须知道的10大基础实用算法
- 【Visual C++】游戏开发笔记十七 游戏基础算法(一) 游戏随机系统初步
- 基础算法 第五周动规2 UNIMODAL PALINDROMIC DECOMPOSITIONS
- 【java之基础算法】打印菱形
- 泛型算法:Tips (1) --- bind 基础
- 算法基础(三)---- 计算字符串数字平均值
- 基础算法 —— 插入排序
- [笔记][中国大学mooc][程序设计与算法(二) 算法基础][递归] 放苹果
- 面向基础软件工程师的算法实践与分析
- 推荐算法基础--矩阵奇异值分解svd
- JAVA代码—算法基础:将N*N的矩阵顺时针旋转90度输出元素
- 浅析数据结构与算法12--无向图相关算法基础
- 机器学习(K-近邻算法)Python的基础知识
- python的内置数据结构及基础算法
- 【基础算法】铲雪车问题(BZOJ1190)
- 算法基础之插入排序
- 腾讯2017实习生编程之算法基础-字符移位