您的位置:首页 > 职场人生

常用算法总结之排序(一)----写在前面

2010-10-15 10:59 330 查看
      最近一段时间算是面试的季节,虽然我还不要找工作,但浸染其中也多少对招聘方的需求有了些了解。对于我们计算机系的学生来说,面试写代码是必不可少的事情,但综合师兄师姐们的说法,难度也不是太大,总体来说是一些常用算法的编程实现。由此,我萌生了总结一下平时常用的算法,诸如排序、查找、字符串操作之类,也算是对于c++的一种复习。
    
     首先还是从排序开始。

     排序应该算是必学的入门算法了。所谓排序即是按照一定的规则将一组数据排列起来,在后续的篇章中将默认以从小到大的规则来进行排序。排序按照算法的不同有多种形式,按照处理过程中数据的保存形式的不同可以分为内部排序和外部排序两种。

     内部排序:排序过程不需访问外存。使用内部排序时,所有的数据都保存在内存中,相较而言,当处理的数据量巨大时,不可能全部存储在内存,那即是外部排序。内部排序的过程是一个逐步扩大记录的有序序列长度的过程。前面所说的按算法所分的不同形式中,属于内部排序的有:交换排序、选择排序、插入排序及合并排序。交换排序主要包括冒泡排序和快速排序,选择排序主要包括直接选择排序和堆排序,插入排序主要包括直接插入排序和希尔排序。以后将按照这个顺序分别总结各类算法。

     外部排序:前面已说过,排序时通常数据量巨大,不可能都储存在内存中,排序时一般从外存读取一部分数据进入内存进行排序,处理过后再从内存存储回外存,然后再从外存读取部分数据进入内存处理。这样的处理过程最适合多路合并排序,即先将原数据分解成许多能一次装入内存的部分,每次读取一个部分进行排序处理,然后对每一有序部分进行合并排序完成原文件的排序。

     以上算作写在前面的话,对整个部分做一个概述,下一篇将从冒泡排序开始总结。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息