急急急啊 高手请进 跪求数据结构课程设计!

来源:百度知道 编辑:UC知道 时间:2024/05/26 12:29:24
1. 内部排序演示

问题描述
设计一个测试程序比较几种排序算法的关键字比较次数和移动次数以取得直观感受。

基本要求
(1)对起(冒)泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、堆排序算法进行比较;
(2)待排序的元素的关键字为整数。其中的数据要用伪随机产生程序产生(如10000个),至少用5组不同的输入数据做比较,再使用各种算法对其进行排序,记录其排序时间,再汇总比较;
(3)演示程序以人机对话的形式进行。每次测试完毕显示各种比较指标值的列表,用条形图(星号表示)进行表示,以便比较各种排序的优劣。

测试数据
由随机数产生器生成
实现提示
主要工作是设法在已知算法中的适当位置插入对关键字的比较次数和移动次数的计数操作。程序还可以考虑几组数据的典型性,如:正序、逆序和不同程度的乱序。注意采用分块调试的方法。

选作内容
(1)对不同表长进行比较
(2)验证各算法的稳定性

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
const int MAX_SIZE=100;
void partition1(int A[],int n,int first,int last,int &mid)//划分
{
int i=first,j=last,x=A[i];
while(i<j)
{
while(i<j&&A[j]%3!=0)
j--;
if(i<j)
{
A[i]=A[j];i++;
}
while(i<j&&A[i]%3==0)
i++;
if(i<j)
{
A[j]=A[i];
j--;
}
}
A[i]=x;
mid=i;
}
void partition2(int A[],int n,int first,int last,int &mid)//划分
{
int i=first,j=last,x=A[i];
while(i<j)
{
while(i<j&&A[j]%3!=1)
j--;
if(i<j)
{
A[i]=A[j];i++;
}
while(i<j&&A[i]%3==1)
i++;