排序算法
华仔的逆袭
这个作者很懒,什么都没留下…
展开
-
经典的排序算法--选择排序与冒泡排序
1、选择排序选择排序的核心思想就是:每遍历一次数组都选择出其中最大或者最小的数值,形成有序的数列。在排序过程中,数组中会存在一部分有序数列和一部分无序数列,所以在排序中,需要我们仅排无序数列部分即可,这样会一定程度上加快程序运行速度。平均的时间复杂度为O(n*n)。#includeusing namespace std;void choiceSort(int num[],i原创 2015-03-05 17:28:42 · 531 阅读 · 0 评论 -
经典的排序算法--快速排序
快排的核心思想:确定基准,然后按照基准进行分割。递归0.快速排序的框架快速排序(升序)的思想就是先确定一个基准,然后通过partition函数去让数组保持小于等于和大于分别置于数组两端。然后通过递归不断对数组进行划分,最终达到有序。 例如:ABCDEFGHIJK;如果此序列的基准为F,那么我们最终通过一次partition要达到的效果就是:ABCDE都小于等于F,GHIJK都大于F。ABCDE和原创 2017-03-27 18:26:26 · 1371 阅读 · 0 评论 -
经典的排序算法--归并排序
归并排序核心思想:递归过程,使得前1/2和后1/2分别有序,然后对两个有序序列进行合并。从递归的逆过程看,就是两两合并,最终达到有序。 递归逆过程举例: 【3】【1】【5】【8】【7】【4】【2】【6】 【1,3】【5,8】【7,4】【2,6】 【1,3,5,8】【2,4,6,7】 【1,2,3,4,5,6,7,8】对于归并排序来说,合并过程是算法中的核心步骤,我们不多说了,来看看代码。i原创 2017-03-28 21:03:55 · 444 阅读 · 0 评论 -
经典的排序算法--堆排序
核心点:堆调整如何形成最小堆/最大堆,那就先需要了解最小堆/最大堆的概念。最大堆(大根堆)要求根节点的关键字既大于或等于左子树的关键字值,又大于或等于右子树的关键字值,且要求是完全二叉树。原创 2017-03-25 10:05:50 · 385 阅读 · 0 评论 -
经典的排序算法--选择排序与冒泡排序
选择排序与冒泡排序1. 选择排序选择排序的核心思想就是:每遍历一次数组都选择出其中最大或者最小的数值,形成有序的数列。在排序过程中,数组中会存在一部分有序数列和一部分无序数列,所以在排序中,需要我们仅排无序数列部分即可,这样会一定程度上加快程序运行速度。平均的时间复杂度为O(n*n)。原创 2016-08-06 14:40:14 · 536 阅读 · 0 评论