此文用的是最大堆, 最大堆的堆排序之后的数组是升序, 最小堆反之.
堆排序 HeapSort 由 以下两部分组成 :
- 堆化 MaxHeapify
- 建堆 BuildMaxHeap.
. . .
此文用的是最大堆, 最大堆的堆排序之后的数组是升序, 最小堆反之.
堆排序 HeapSort 由 以下两部分组成 :
. . .
与归并排序一样, 快排也是用了分治的思想。
特别注意 : 快排的核心模块是Partition, 而Partition的复杂度为O(N).
你可以想象一个两副牌然后随意取出一张牌pivot,其他的所有牌都跟这张pivot牌比较,
大的放右边那一摞A,小的放左边B。
接着再从左边这一摞B再随意取出一张牌pivot,其他的所有牌都跟这张pivot牌比较,
大的放右边那一摞,小的放左边,递归下去。
A也重复上述步骤递归。
递归结束之后, 左边的都比右边的小, 而且是有序的。
对于分治算法,当每次划分时,算法若都能分成两个等长的子序列时,那么分治算法效率会达到最大。也就是说,基准的选择是很重要的。选择基准的方式决定了两个分割后两个子序列的长度,进而对整个算法的效率产生决定性影响
所以当如果一个有序递增序列, 每次选基准都选最后一个, 那肯定效率很差了啊
. . .
开头字母用变量类型的缩写,其余部分用变量的英文或英文的缩写,要求单词第一个字母大写。
ex:
int iMyAge; “i”是int类型的缩写;
char cMyName[10]; “c”是char类型的缩写;
float fManHeight; “f”是float类型的缩写;
其他:
前缀类型 a b by c cb cr cx,cy dw fn h i l lp m_ n np p s sz w (一一对应关系)
. . .