程序员必知8大排序3大查找(一)解析_第1页
程序员必知8大排序3大查找(一)解析_第2页
程序员必知8大排序3大查找(一)解析_第3页
程序员必知8大排序3大查找(一)解析_第4页
程序员必知8大排序3大查找(一)解析_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、程序员必知8大排序3大查找(一每天都在叫嚣自己会什么技术,什么框架,可否意识到你每天都在被这些新名 词、新技术所迷惑,.NET、XML等等技术固然诱人,可是如果自己的基础不扎实,就 像是在云里雾里行走一样,只能看到眼前,不能看到更远的地方。这些新鲜的技术掩 盖了许多底层的原理,要想真正的学习技术还是走下云端,扎扎实实的把基础知识学 好,有了这些基础,要掌握那些新技术也就很容易了。要编写出优秀的代码同样要扎实的基础,如果排序和查找算法学的不好,怎么对 程序的性能进行优化?废话不多说,本文要介绍的这些排序算法就是基础中的基础,程 序员必知!内部排序iTi 中 1选杼排序二1、直接插入排序 (1基本

2、思想:在要排序的一组数中,假设前面(n-1 n=2个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。(2实例初始状态57 68 59 525168 59 5257 59 686857,不处理1 亠5257f 插 1o57 68 59 52结幕 52 57 59115759957 59 686857,不处理I 5257,插2 57 68 59 52结果;52 57 595759=h2i,hi=2i+1 或(hi=h2i,hiv=2i+1(i=1,2,.,n/2时称之为堆。在这里只讨论满足前者条件的堆。由 堆的定义可以看出,堆顶元

3、素(即第一个元素必为最大项(大顶堆。完全二叉树可以很 直观地表示堆的结构。堆顶为根,其它为左子树、右子树。初始时把要排序的数的 序列看作是一棵顺序存储的二叉树,调整它们的存储序,使之成为一个堆,这时堆的根 节点的数最大。然后将根节点与堆的最后一个节点交换。然后对前面(n-1个数重新调整使之成为堆。依此类推,直到只有两个节点的堆,并对它们作交换,最后得到有n 个节点的有序序列。从算法描述来看,堆排序需要两个过程,一是建立堆,二是堆顶与 堆的最后一个元素交换位置。所以堆排序有两个函数组成。一是建堆的渗透函数,二是反复调用渗透函数实现排序的函数。(2实例:初始序列:46,79,56,38,40,84

4、建堆:交换,从堆中踢出最大数剩余结点再建堆,再交换踢出最大数依次类推:最后堆中剩余的最后两个结点交换,踢出一个,排序完成。5、冒泡排序(1基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而 下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当 两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。(2实例:初抬状畜57 68 59 52 57 68 59 52 52 57 68 59J - /57 68 52 595257 59 6857 52 68 5952 57J59 6852 57 68 59未完待续,第二篇将介绍剩余3大排序,排序稳定性,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论