云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 数据结构实验4 排序

数据结构实验4 排序

  • 62 次阅读
  • 3 次下载
  • 2025/5/26 9:54:57

实验4 快速排序

一、 实验目的和要求

1 在掌握各种排序方法的排序过程的基础上,完成快速排序算法程序设计。

2 能够对排序算法进行基本的复杂度分析。

二、实验内容

排序就是把一组元素按照某个域的值的递增或递减的次序重新排列的过程。 快速排序

在待排序记录序列中任取一个记录作为枢轴,以它作为比较的“基准”,将待排序划分为左右两个子序列,使行左边子序列中记录的关键字均小于等于枢轴,右边子序列中各记录的关键字都大于等于枢轴。对所划分的两组分别重复上述过程,直到各个序列的记录个数为1时为止。快速排序函数原型QuickSort(SeqList sq)。

设计一个算法,在顺序表存储结构上实现快速排序。排序数据为学生的考试成绩单。成绩单由学生的学号、姓名和成绩组成,设计一个程序对给定的n个学生的成绩单按照名次列打印出每个学生的名次、学号、姓名和成绩。

三、实验步骤

1.输入待排序的记录

2. 对自定义记录类型重载比较运算符 3. 排序

1)并选择第一个记录作为pivotkey记录 2)从high指向的记录开始,向前找到第一个关键字的值小于Pivotkey的记录,将其放到low指向的位置,low+1

3).从low指向的记录开始,向后找到第一个关键字的值大于Pivotkey的记录,将其放到high指向的位置,high-1 4)重复2),3),直到low=high,将枢轴记录放在low(high)指向的位置 5)重复2),3),4),直到整个记录有序为止 6) 输出排序记录 ,完成比较。 4. 附加要求:不采用运算法重载的方式,而是定义compare函数指针,通过传给quicksort函数指针,完成排序。

1

四、实验提示

算法实现:

#include \#define MaxSize 100 typedef int DataType;

class CRecord {

public: int No;

string name; int grade; }

Typdef CRecord DataType;

class SeqList{ public:

CRecord * data; int length; }

//创建顺序表

Void SLCreat(SeqList & sq); { CRecord x; length = 0;

cout <<\请输入数据元素数”; cin>>sq.length;

sq.data= new CRecord[sq.length];

cout <<\请输入数据元素值: no, , name grade \ for(int i = 0; i < n; i++) {

cin >> sq.data[i].no>>sq .data[i].name>>sq. data[i]grade;

} }

//排序

Void Sort( SeqList & sq ) { SLCreat(sq);

QuickSort(sq,0,sq.length); }

//快速排序

void QuickSort(SeqList & sq, int low, int high)

2

{ int pos;

if(low < high) { pos = partition(sq,low, high); QuickSort(sq,low, pos-1); QuickSort(sq, pos+1, high); } }

int partition(SeqList & list, int i, int j) { DataType pivotkey; pivotkey = list[i]; while(i < j)

{ while(i < j&&list[j] >= pivotkey) --j; if(i < j) list[i++] = list[j]; while(i < j&&list[i] <= pivotkey) ++i; if(i < j) list[j--] = list[i]; }

list[i] = pivotkeyl return i; }

//将顺序表显示在屏幕上 void SLPrint(SeqList & sq) {

cout <<\快速排序结果: \

for(int i = 0; i

void main( )

{ SeqList myList;

SLCreat(SeqList &mylist); Sort(mylist ); SLPrint( ); }

3

搜索更多关于: 数据结构实验4 排序 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

实验4 快速排序 一、 实验目的和要求 1 在掌握各种排序方法的排序过程的基础上,完成快速排序算法程序设计。 2 能够对排序算法进行基本的复杂度分析。 二、实验内容 排序就是把一组元素按照某个域的值的递增或递减的次序重新排列的过程。 快速排序 在待排序记录序列中任取一个记录作为枢轴,以它作为比较的“基准”,将待排序划分为左右两个子序列,使行左边子序列中记录的关键字均小于等于枢轴,右边子序列中各记录的关键字都大于等于枢轴。对所划分的两组分别重复上述过程,直到各个序列的记录个数为1时为止。快速排序函数原型QuickSort(SeqList sq)。 设计一个算法,在顺序表存储结构上实现快速排序。排序数据为学生的考试成绩单。成绩单由学生的学号、姓名和成绩组成,设计一个程序对给定的n个学生

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com