这里对笔试面试最常涉及到的12种排序算法(包括插入排序、二分插入排序、希尔排序、选择排序、冒泡排序、鸡尾酒排序、快速排序、堆排序、归并排序、桶排序、计数排序和基数排序)进行了详解。每一种算法都有基本介绍、算法原理分析、图解/flash演示/视频演示、算法代码、笔试面试重点分析、笔试面试题等板块。
一、插入排序
1)算法简介
插入排序(Insertion Sort)的算法...
分类:
编程语言 时间:
2015-08-02 23:27:29
阅读次数:
289
> 分析 >> 本题的难点在于排序速度上 >> 排序算法要考虑重复项很多,无重复项两种情况 >> 当然由于本题对内存占用的要求不高,也可以不使用排序> 总体思路 >> 先将电话号码按输入的顺序存下来 >> 对所有号码使用堆排序 >> 排序后根据号码连续出现的频率输出频率大于1的号码> 输入转换 >>...
分类:
编程语言 时间:
2015-08-02 11:37:34
阅读次数:
185
这题是典型的堆排序算法,只是比一般的堆算法多了删除的操作,有两件事需要做:1 用一个hash表存储从输入数组索引到堆数组(用于实现堆的那个数组)所以的映射,以便在需要删除一个元素的时候能迅速定位到堆数组中的位置2用一个set保存已经被删除的元素索引(这里指的是输入数组索引),这一点可选;还有一种做法...
摘要:本篇博客,介绍另一种数组排序算法:堆排序。算法用C实现。...
分类:
编程语言 时间:
2015-08-01 20:37:10
阅读次数:
186
1.在平时的学习中,很经常听到各种排序算法,各自有其优缺点。尝试自己用C++实现各排序算法,作为对算法的基础学习。 常见的内部排序:插入排序冒泡排序选择排序快速排序堆排序归并排序基数排序希尔排序
分类:
编程语言 时间:
2015-08-01 11:15:30
阅读次数:
141
冒泡排序、快速排序、堆排序的性能比较对照
排序方法 比较次数 移动次数 稳定性 辅助空间
最好 最差 最好 最差 最好 最差
冒泡排序 n n^2 0 n^2 是 1 1...
分类:
编程语言 时间:
2015-07-31 14:56:50
阅读次数:
129
首先是算法实现文件Sort.h,代码如下:
/*
* 实现了八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序
* 以及快速排序、归并排序、堆排序和LST基数排序
* @author gkh178
*/
#include
template
void swap_value(T &a, T &b)
{
T temp = a;
a = b;
b = temp;
}
//插入排序:时...
分类:
编程语言 时间:
2015-07-31 01:20:34
阅读次数:
116
首先是EightAlgorithms.java文件,代码如下:
import java.util.Arrays;
/*
* 实现了八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序
* 以及快速排序、归并排序、堆排序和LST基数排序
* @author gkh178
*/
public class EightAlgorithms {
//插入排序:时间复杂度o(n^2)...
分类:
编程语言 时间:
2015-07-30 21:29:55
阅读次数:
122
堆数据结构是一种数组对象,它可以被视为一科完全二叉树结构。它的特点是父节点的值大于(小于)两个子节点的值(分别称为最大堆和最小堆)。它常用于管理算法执行过程中的信息,应用场景包括堆排序,优先队列等。1、根结点若有子树,则子树一定也是堆。2、根结点一定大于(或小于)子结点。因为要求堆必须是完全二叉树,所以可以用线性的数据结构,比如数组,来实现堆。利用数组实现,则对于长为N的堆中的元素从0到N-1排列...
分类:
其他好文 时间:
2015-07-30 19:34:42
阅读次数:
414
转自:http://blog.csdn.net/morewindows/article/details/6709644/堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先讲解下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是完全二叉树或者是近似完全二叉...
分类:
编程语言 时间:
2015-07-30 16:52:43
阅读次数:
127