排序算法课程设计题1(2)

2019-02-15 13:29

第 6 页

while(i<=n-2*h+1) {

Merge(r,r1,i,i+h-1,i+2*h-1); i+=2*h; }

if(i

Merge(r,r1,i,i+h-1,n); else

for(int k=i;k<=n;k++) r1[k]=r[k]; }

void MergeSort(int r[],int n) {

int *r1=new int[n+1]; int h=1; while(h<=n) {

MergePass(r,r1,n,h); h=2*h;

MergePass(r1,r,n,h); h=2*h; } }

//文件数据的产生和读写的头文件:file.h //随机产生待排数据的函数实现

void generate(int *array_to_sort, const int length); //数据写入文件的函数实现

bool write(int *array, int length, const char *file_name); //从文件读入数据的函数实现

bool read(int *array, int length, const char *file_name); //文件数据的产生和读写函数的实现的源文件:file.cpp #include \#include #include #include using namespace std;

//随机产生待排数据的函数实现

void generate(int *array_to_sort, const int length) {

for (int i = 1; i <=length; i++) {

array_to_sort[i] = rand(); } }

第 6 页 共 6 页

第 7 页

//数据写入文件的函数实现

bool write(int *array, int length, const char *file_name) {

ofstream out(file_name); if (!out) {

cerr << \ << file_name << \<< endl; return false; }

for (int i = 1; i <= length; i++) {

out << array[i] <<\; if(i==0) out<

out.close(); return true; }

//从文件读入数据的函数实现

bool read(int *array, int length, const char *file_name) {

ifstream in(file_name, ios::in); if (!in) {

cerr << \ << file_name << \ << endl; return false; }

for (int i = 1; i <= length; i++) in >> array[i]; in.close(); return true; }

菜单选择项函数的头文件:menu.h

#include #include #include \#include %using namespace std; int Menu();

void Sort(int *r,int n,int m); void Printm(int *r,int n);

菜单选择项函数的实现的源文件:menu.cpp #include using namespace std;

第 7 页 共 7 页

第 8 页

#include \ int Menu() {

int n;

cout<<\选择希尔排序算法\<>n; return n; }

void Sort(int *r,int n,int m) {

switch(m) {

case 1:ShellSort(r,n);break; case 2:QuickSort(r,1,n);break; case 3:HeapSort(r,n);break; case 4:MergeSort(r,n);break;

default:cout<<\输入的选择项错误\;break; } }

void Printm(int *r,int n) {

for(int i=1;i<=n;i++) {cout<

//主函数的实现的源文件:main.cpp #include #include #include #include \#include \ #include%using namespace std; int main() {

第 8 页 共 8 页

第 9 页

int N=10000;

cout<<\随机产生个数据存入磁盘文件中\<

write(r, N, \);

cout<<\数据已存到磁盘文件中\<

cout<<\请输入你想读出的数据个数\<>n;

int *p=new int[100001]; read(p, n, \); cout<<\读出的数据为\<

cout<<\排序后的结果为:\<

cout<<\并将排好的数据存入原文件中:\<

六.程序测试及运行结果:

第 9 页 共 9 页

第 10 页

七.我的收获

通过这次实验,我知道了实际上解决一个问题的办法有很多种,应该发散自己的思维,尝试着寻求更多的解决的办法,在已有的基础上找到使解决问题的办法更有效,具有更高效率,不应该只满足于单纯的解决问题,还要考虑该办法的有效性。特别的一点是程序设计是很有趣的。

第 10 页 共 10 页


排序算法课程设计题1(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《微控制器技术应用》试卷9

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: