数据结构与算法
zy19982004
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构与算法学习
标记原创 2012-11-03 11:09:39 · 128 阅读 · 0 评论 -
数据结构与算法学习一:冒泡排序
一.排序方法 将被排列的数组data[0...n]垂直排列,每个元素data[i]看作是一个气泡,气泡的重量就是data[i]的值。 从最下面一个气泡data[n]开始扫描,比较其与上一个气泡data[n-1]的重量,data[n] < data[n-1]则交换;然后比较data[n-1]与data[n-1-1]...一轮下来,最轻的气泡跑到了最上面data[0]的位置。 重复2过程...2012-11-04 11:06:53 · 170 阅读 · 0 评论 -
数据结构与算法学习二:直接选择排序
一.排序方法 被排列的数组data[0...n],选定当前位置i=0作为最小值下标position;在data[i+1...n]区间每个元素与data[position]比较,记录新position,最后交换data[i]和data[position]。这样最小的元素就到了当前位置了。 当前位置i+1,重复1... 二.动画演示 http://student.zjz...2012-11-04 17:00:08 · 205 阅读 · 0 评论 -
数据结构与算法学习三:直接插入排序
一.排序方法 基本思想:被排列的数组data[0...n]。初始时,data[0]自成1个有序区,无序区为data[1..n];从i=1起直至i=n为止,依次将data[i]插入当前的有序区data[0..i-1]中,生成含n个记录的有序区。 将待插入元素data[i]从右向左依次与有序区中记录data[j](j=i-1,i-2,…,0)进行比较。 若data[j]大于dat...2012-11-06 16:53:43 · 181 阅读 · 0 评论 -
数据结构与算法学习四:希尔排序
一.排序方法 先取一个小于n的整数increment作为第一个增量,把文件的全部记录分成increment个组。所有距离为increment的倍数的记录放在同一个组中。先在各组内进行直接插人排序。 取第二个增量increment(小于1中的increment)重复上述的分组和排序,直至所取的增量increment=1,即所有记录放在同一组中进行直接插入排序为止。 希尔排序实质上是一种分...2012-11-06 17:53:28 · 162 阅读 · 0 评论 -
数据结构与算法学习五:快速排序
一. 排序方法 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。 分治法的基本思想是:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。原排序数组data[0...n]。 分解:在data[low..high...原创 2012-11-07 11:30:21 · 152 阅读 · 0 评论 -
数据结构与算法学习六:堆排序
一. 定义 任何关键字data[0...n]都可以组成一个完全二叉树。 堆就是一种特殊的二叉树:树中任一非叶结点的关键字均大于等于(或小于等于)其左右孩子(若存在)结点的关键字。 大于等于称为大根堆;小于等于称为小根堆。 二. 排序方法(以大根堆为例) 先将初始文件data[1..n]建成一个大根堆,此堆为初始的无序区。 将关键字最大的记录data[0](即堆顶...原创 2012-11-07 22:50:33 · 200 阅读 · 0 评论 -
数据结构与算法学习七:归并排序
一. 排序方法 归并排序(Merge Sort)是利用"归并"技术来进行排序。归并是指将若干个已排序的子文件合并成一个有序的文件。 给定数组data[0...n],若data[0...m]和data[m+1...n]两个子数组均已经有序。 可以先将两个子数组合并到一个临时数组tmpAr[0...n]里面。 然后将tmpAr复制到原data数组里面。 合并过程 合并过程中,设置i,j...2012-11-08 22:03:45 · 156 阅读 · 0 评论
分享