实验报告。
计算机科学与技术学院。
20 17年12 月 12 日。
实验项目名称: 排序方法的比较。
一、实验目的。
熟练掌握常用的内排序方法并加以比较。
二、实验内容。
设一组数据,分别用直接插入排序,冒泡排序法,快速排序法,希尔排序,简单选择排序法。
三、实验操作步骤。
1.直接插入排序。
在前一段有序条件下将下一个元素插入这个序列,每次将这个有序列的长度增加,以此最终实现排序。但是本方法每次插入元素所需移动步数较大,执行起来较慢。具体实现如下:
void insert1(sqlist &l,int a,int b,int c)
int i;
for(i=0;i
for(int j=b;j>=i;j--)
void insertsort(sqlist &l)//插入排序。
for(int i=1;i<
2. 冒泡排序。
冒泡排序采用消除逆序的方法,将所有逆序消除即为有序,每次扫描表将发现逆序消除,最终将最大元素放入表尾,以此类推最终实现排序。具体实现如下:
void buttel(sqlist &l)//冒泡排序。
for(int i=0;i<
if(flag==1)
break;
3. 快速排序。
每次排序选取第一个元素作为基准元素,用两个指针分别重表尾和表头扫描表,将比这个元素元素小的放在左边,比这个元素大放在右边,那么分别对左边部分和右边部分进行同样操作,最终实现表的排序,采用分治的思想。具体实现如下:
void quicksort(sqlist &l,int left,int right)//快速排序。
if(left>right)
return;
int i,j,temp;
temp=i=left;
j=right;
while(i
quicksort(l,left,i-1);
quicksort(l,i+1,right);
4. 选择排序。
每次将无序序列中最小的元素放入有序段的尾部,以此增大有序段的长度。具体实现如下:
for(int i=0;i<
if(k!=i)
5. 希尔排序。
由于直接插入排序影响效率一个因素是元素在插入时,所需的移动步伐,当表基本有序的时候,算法的执行效率较高。希尔排序通过减小增量的方法可能满足这个条件,用增量将表分组,然在每一组进行直接插入排序依次来减小移动的步伐。具体实现如下:
int i,j,k,temp;
int gap;
for(gap=>0;gap=gap/2)
4、实验结果。
直接插入排序。
冒泡排序。选择排序。
快速排序。希尔排序。
5、实验主要**如下。
typedef struct
int *list;
int length;
int size;
sqlist;
void insertsort(sqlist &l)//插入排序。
for(int i=1;i<
void buttel(sqlist &l)//冒泡排序。
for(int i=0;i<
if(flag==1)
break;
void selectsort(sqlist &l)//选择排序。
for(int i=0;i<
if(k!=i)
void quicksort(sqlist &l,int left,int right)//快速排序。
if(left>right)
return;
int i,j,temp;
temp=i=left;
j=right;
while(i
quicksort(l,left,i-1);
quicksort(l,i+1,right);
void shellsort(sqlist &l)//希尔排序。
int i,j,k,temp;
数据结构内部排序比较分析
数据结构实训报告。实验名称 数据结构。题目 内部排序比较。专业班级 姓名 学号 实验日期 一 实验目的 通过随机数据比较各内部排序算法的关键字比较次数和关键字移动的次数,以取得直观感受。训练学生综合设计算法能力。二 实验要求 待排序长度不小于100,数据可有随机函数产生,用五组不同输入数据做比较,比...
数据结构内部排序算法比较
目录。摘要 1 1绪论 12系统分析 1 2.1 功能需求 1 2.2数据需求 1 2.3 性能需求 2 3总体设计 2 3.1系统设计方案 2 3.2功能模块设计 2 4详细设计 3 4.1 数据结构定义 3 4.2伪随机产生数据模块 4 4.3简单选择排序模块 6 4.4起泡排序模块 7 4.5...
数据结构课设 排序算法比较
6 排序算法比较 必做 设计要求 利用随机函数产生n个随机整数 n 500,1000,1500,2500,30000 利用直接插入排序 折半插入排序,起泡排序 快速排序 选择排序堆排序,基数排序七种排序方法。可添加其它排序方法 进行排序 结果为由小到大的顺序 并统计每一种排序所耗费的时间。各个函数均...