课程设计求救:多种方法排序
啊,编程能力相当次啊,希望大家帮帮忙,大神来说应该不难,我对着书写了一部分代码,功能实现的就不会了,希望大神们给看看,给一份代码,感激不尽啊!!
#include "iostream"C malloc
#include "time.h"
#include <windows.h>
using namespace std;
//表格显示函数
void print_star()
{
printf("***********************************\n");
}
void print_line()
{
printf("+---------------------------------------------------+\n");
}
void print_table()
{
printf("|");
}
//大于1万的不确定个数,使用链表,随用岁取。
struct node
{
int data;
node *next;
};
node *head=NULL;
void InsertNode(node* &head,int value)
{
if(head==NULL)
{
head=(node *)malloc(sizeof(node));
if(head==NULL)
{
printf("malloc failed");
return ;
}
else
{
head->data=value;
head->next=NULL;
}
}
else
{
node *temp=(node *)malloc(sizeof(node));
if(temp==NULL)
{
printf("malloc failed");
return ;
}
else
{
temp->data=value;
temp->next=head;
head=temp;
}
}
return ;
}
void Insert(int n)
{
int IsPrinRan;
int flag_insert=1;
srand( (unsigned)time( NULL ) ); //初始化随机数
for(int i=0;i<n;i++)
InsertNode(head,rand());//将随机数插入链表
node *p=(node *)malloc(sizeof(node));
p->next=head;
head=p;
print_star();
printf("是否显示产生的随机数?\n 1.显示 2.不显示\n");
print_star();
while(flag_insert)
{
//printf("正常运行到此处。");
scanf("%d",&IsPrinRan);
getchar();
if(IsPrinRan==1)
{
printf("所产生的随机数为: \n");
p=head->next; //输出测试
while(p)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
flag_insert=0;
}
else if(IsPrinRan==2)
{
//printf("正常运行到此处。");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
FOREGROUND_INTENSITY | FOREGROUND_GREEN);
printf("随机数已成功产生!\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |
FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
flag_insert=0;
}
else{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
FOREGROUND_INTENSITY | FOREGROUND_RED);
printf("输入字符有误!请重新输入:\n");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |
FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
flag_insert=1;
}
}
return ;
}
//+++++++++++++函数的定义++++++++++++++
//插入排序:crpx();
void crpx(node* &head)
{
struct node * p;
p=head;
p=p->next;
node* tmp;
tmp=p->next;
if(head!=NULL)
{
do{
printf("%d ",p->data);
if(p->data<tmp->data)
printf("yes!\n");
p=p->next;
}while(p!=NULL);
}
}
//==========main函数 ==============
int main(void)
{
long no;char IsExit=1;
//程序打开显示
print_line();
print_table();
printf(" 数据结构课程设计 ");
print_table();
printf("\n");
print_line();
print_table();
printf(" 题目:对至少1万随机数多种方法排序,并比较性能 ");
print_table();
printf("\n");
print_line();
printf(" 院系 班级 姓名 学号 \n");
printf("+----------+-----------+----------+-----------------+\n");
print_table();
printf(" 计科系 | 信息班 | 薛永伟 | 201103020002 ");
print_table();
printf("\n");
printf("+----------+-----------+----------+-----------------+\n");
printf("begin>>\n\n");
//随机数的产生
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |
FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
while(IsExit!='e')
{
//printf("正常运行到此处。");
int ch=1;
printf("需要多少个随机数?\n");
scanf("%ld",&no);
Insert(no);
//选择排序的方法
print_star();
printf("选择排序的类型:\n");
cout<<"\n+========================================================+"<<endl;
cout<<"| 1 直接插入排序 2 简单选择排序 |"<<endl;
cout<<"| 3 堆排序 4 冒泡排序 |"<<endl;
cout<<"| 5 快速排序 6 归并排序 |"<<endl;
cout<<"+--------------------+"<<endl;
cout<<"| 0 退出排序程序 |"<<endl;
cout<<"=========================================================+"<<endl;
while(ch!=0)
{
cin>>ch;
if(ch==0)
{
system("PAUSE");
return 0;
}
switch(ch)
{
case 0:ch=0;break;
case 1:crpx(head);break;
/*case 2:xepx(head);break;
case 3:qppx(head);break;
case 4:kspx(head);break;
case 5:xzpx(head);break;
case 6:dpx(head);break;*/
default:cout<<"输入不正确,选择的范围是〈0,1,2,3,4,5,6〉,请重新输入: "<<endl;
}
}
//是否退出系统
printf("\n\n\n是否进行下一组实验?\n输入e退出系统(回车继续执行)\n");
scanf("%c",&IsExit);
print_star();
}
system("pause");
return 0;
}
分享到:
[解决办法]
之前写过几种排序算法的几篇总结和C++实现,LZ要的几种都有,可以参考一下,下面是地址:
http://blog.csdn.net/left_la/article/details/8648133
http://blog.csdn.net/left_la/article/details/8648582
http://blog.csdn.net/left_la/article/details/8656425
[解决办法]
额,不过我之前实现的是数组排序,不是LZ需要的链表
[解决办法]
数据结构书中有代码的哦
运行效率统计,你就用运行时间吧,这有博客使用参考
http://blog.csdn.net/querdaizhi/article/details/6925156
[解决办法]
数据结构(C语言版)
Data Structures Using C
里面有完整的代码