您的位置:逆风者 数据结构 正文
原作者:www.upwinder.com 添加时间:2007-09-02 原文发表:2007-08-31 人气:32 来源:未知

本文章共2108字,分2页,当前第1页,快速翻页:
 

教学目的: 掌握排序的基本概念,插入排序、快速排序的算法

教学重点: 插入排序、快速排序的算法

教学难点: 快速排序算法

授课内容:

逆@风@者

一、排序概述

排序:将一个数据元素的无序序列重新排列成一个按关键字有序的序列。

姓名 年龄 体重 1李由 57 62 2王天 54 76 3七大 24 75 4张强 24 72 5陈华 24 53

上表按年龄无序,如果按关键字年龄用某方法排序后得到下表:

姓名 年龄 体重 3七大 24 75 4张强 24 72 5陈华 24 53 2王天 54 76 1李由 57 62

注意反色的三条记录保持原有排列顺序,则称该排序方法是稳定的!

如果另一方法排序后得到下表:

姓名 年龄 体重 4张强 24 72 3七大 24 75 5陈华 24 53 2王天 54 76 1李由 57 62

原3,4,5记录顺序改变,则称该排序方法是不稳定的!

内部排序:待排序记录存放在计算机随机存储器中进行的排序过程;

外部排序:待排序记录的数量很大,以致内存一次不能容纳全部记录,在排序过程中尚需对外存进行访问的排序过程。

二、插入排序

1、直接插入排序

基本操作是将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增1的有序表。排序过程:

38 49 65 97 76 13 27 49 ...
38 49 65 76 97 13 27 49 ...
13 38 49 65 76 97 27 49 ...
13 27 38 49 65 76 97 49 ...
13 27 38 49 49 65 76 97 ...

2、折半插入排序

在直接插入排序中,为了找到插入位置,采用了顺序查找的方法。为了提高查找速度,可以采用折半查找,这种排序称折半插入排序。

3、2-路插入排序

为减少排序过程中移动记录的次数,在折半插入排序的基础上加以改进:

49 38 65 97 78 13 27 49 ...
i=1 49 first i=2 49 38 final first i=3 49 65 38 final first i=4 49 65 97 38 final first i=5 49 65 76 97 38 final first i=6 49 65 76 97 13 38 final first i=7 49 65 76 97 13 27 38 final first i=8 49 49 65 76 97 13 27 38 final first

三、快速排序

1、起泡排序

首先将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序,则将两个记录交换之,然后比较第二个记录和第三个记录的关键字。直至第n-1个记录和第n个记录的关键字进行过比较为止。

然后进行第二趟起泡排序,对前n-1个记录进行同样操作。

...直到在某趟排序过程中没有进行过交换记录的操作为止。

49 38 38 38 38 13 13 38 49 49 49 13 27 27 65 65 65 13 27 38 38 97 76 13 27 49 49 76 13 27 49 49 13 27 49 65 27 49 78 49 97 初始 第一趟 第二趟 第三趟 第四趟 第五趟 第六趟

2、快速排序

通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。
 

本文章更多内容1 - 2 - 下一页>>
相关文章

数据结构教程 第十五课 串的表示和实现
数据结构教程 第八课 线性表的链式表示与实
数据结构教程 第十七课 实验三:栈的表示与
数据结构教程 第三十三课 哈希表(二)
数据结构教程 第一课 数据结构的基本概念和
五子棋算法
数据结构教程 第三十九课 索引文件
数据结构教程 第十四课 串的定义
数据结构教程 第二十三课 二叉树的存储结构
C语言完成一个学生成绩管理程序
数据结构教程 第十八课 数组的顺序表示与实
数据结构教程 第七课 实验一 线性表的顺序存
数据结构教程 第二课 抽象数据类型的表示与
二叉树基本操作的程序实现
数据结构教程 第三十七课 实验八 排序实验
数据结构教程 第二十八课 图的存储结构
数据结构教程 第十一课 栈的应用
数据结构教程 第十二课 实验二 循环链表实验
数据结构教程 第三十八课 文件概念,顺序文
数据结构教程 第二十一课 树、二叉树定义及

相关评论


本文章所属分类:首页 数据结构

  热门关键字: