实验十 内部排序

ZZU的学弟学妹们不要抄作业哦~(`Д´)

一、实验目的
1.熟悉并掌握各种排序方法的设计思路。
2.掌握各种具体排序算法在计算机上的实现。
3.掌握各种排序方法的性能比较。

二、实验内容
1.直接插入排序、冒泡排序和简单选择排序算法实现,分析各种方法进行排序时对关键字的比较次数和移动次数。
2.快速排序算法的实现。

三、实验要求
1.直接插入排序、冒泡排序和简单选择排序算法实现。(1)设哈希表长为20,用除留余数法构造一个哈希函数。
(1)输入同样一组整型数据,作为待排序记录的关键字序列。
(2)实现直接插入排序算法,输出排序后结果。
(3)实现冒泡插入排序算法,输出排序后结果。
(4)实现简单选择排序算法,输出排序后结果。

2.快速排序算法的实现。
(1)输入一组整型数据,作为待排序记录的关键字序列。
(2)实现快速排序算法,输出排序后结果。

四、详细程序清单

//排序 
#include
#include

#define MAXSIZE 20
#define INFINITY 0x7FFFFFFF //定义最大值∞

typedef int KeyType;
typedef int InfoType;
typedef struct{
	KeyType key;
	InfoType otherinfo;
}RedType;
typedef struct{
	RedType r[MAXSIZE+1];
	int length;
}SqList;

void InsertSort(SqList &L)//直接插入排序 
{
	int i,j;
	for(i=2;i<=L.length;i++)
	  	if(L.r[i].keyL.r[j].key)
				{
					temp=L.r[j].key;
					L.r[j].key=L.r[j].key;
					L.r[j].key=temp;
				}
			}	
}

int SelectMinKey(SqList L,int i)//选择最小值 
{
	int min=INFINITY;
	for(i;i<=L.length;i++)
		{
			if(L.r[i].key=pivotkey) --high;
        L.r[low]=L.r[high];
        while(low

五、程序运行结果
实验十 内部排序_第1张图片

六、实验心得体会
1.本次作业总共使用了四种排序方法,使我更加深刻地认识到了四中不同排序算法的差别和优劣。
2.快速排序虽然难以理解,却是效率最高的排序算法,须牢牢掌握。
3.这是最后一次写实验报告了,回首这一学期,感触良多。我本来就很喜欢编程,也打ACM,但是刚开始接触《数据结构》这本书的时候还是觉得晦涩难懂,不过随着逐渐的学习,越来越能感受到这本书的美妙。一学期的锻炼让我梳理清楚了数据的结构,对原来不常用的算法进行了查漏补缺,尤其是编程风格得到了很大提高。但我还有很多很多不足:书上有些代码的写法我依然不能很好的理解;我经常为了省事滥用全局变量;函数的嵌套有时复杂繁乱;代码风格不统一:大小写用法不统一,变量名、函数名不统一,有时候觉得这样写好,有时又觉得那样写好。
4.学习编程的道路还很长很长,以后会更加努力!

你可能感兴趣的:(数据结构实验_C语言)