`
insertyou
  • 浏览: 872162 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

数据结构-排序

 
阅读更多

//排序
//程序:张建波
//时间:05/07/10 Am 2:50
#include <iostream.h>
#include <stdlib.h>
#include "menu.h"
#include "key.h"

int RandomNum(int *RandArray,int N); //随机生成数据
void OutPutNum(int *p,int N); //输出测试数据
void BubbleSort(int *p,int N,int SortType); //冒泡排序
void InsertSort(int *p,int N,int SortType); //插入排序

int _CreatRandData(int *RandArray); //输入随机数范围
int _InputData(int *RandArray); //输入自定义数据
void _TestBubbleSort(int *RandArray,int n); //冒泡排序 测试程序
void _TestInsertSort(int *RandArray,int n); //插入排序 测试程序


int _f8_main(){

int n=0,t=1,ID;
int RandArray[1024*5]; //储存测试数据
Menu m[7];
m[1].Name="生成随机数据";
m[2].Name="输入测试数据";
m[3].Name="冒泡排序";
m[4].Name="插入排序";
m[5].Name="查看数据";
m[6].Name="返回 ";
while(t)
{
ShowMenu("数据结构----数据排序",m,6);//显示菜单
ID=SelectMenuID();
switch(ID)
{
case 1:{n=_CreatRandData(RandArray);break;}
case 2:{n=_InputData(RandArray);break;}
case 3:{_TestBubbleSort(RandArray,n);break;}
case 4:{_TestInsertSort(RandArray,n);break;}
case 5:{OutPutNum(RandArray,n);InitKey();break;}
case 6:{return 0;}
}
}


return 0;
}

int RandomNum(int *RandArray,int N){ //随机生成数据
for(int i=0; i<N; i++) RandArray[i]=(int)rand();
return N;
}

void OutPutNum(int *p,int N){ //输出测试数据
for(int i=0;i<N;i++){
if(i%10==0)cout<<"\n";
cout<<p[i]<<" ";
}
}

void BubbleSort(int *p,int N,int SortType){ //冒泡排序
//SortType=0 表示从大到小排序 SortType=1 从小到大排序
int tmp;
for(int i=0;i<N;i++)
for(int j=0;j<N;j++)
{
if(p[i]<p[j] && SortType==0){
tmp=p[i];
p[i]=p[j];
p[j]=tmp;
}
else if(p[i]>p[j] && SortType==1){
tmp=p[i];
p[i]=p[j];
p[j]=tmp;
}

}
}

void InsertSort(int *A,int N,int SortType){ //插入排序
//SortType=0 表示从小到大排序 SortType=1 从大到小排序

int j,p;
int Tmp;
for(p=1;p<N;p++)
{
Tmp=A[p];
if(SortType==0)for(j=p;j>0 && A[j-1]>Tmp;j--)A[j]=A[j-1];

if(SortType==1)for(j=p;j>0 && A[j-1]<Tmp;j--)A[j]=A[j-1];

A[j]=Tmp;
}


}


int _CreatRandData(int *RandArray){ //输入随机数范围
int n;
Loop_1:
cout<<"请输入数据个数(0<n<=5000)\nn=";
cin>>n;
if(n<=0 || n>5000){cout<<"数据超出范围:!!!\n";goto Loop_1;}
n=RandomNum(RandArray,n);InitKey();
return n;

}


int _InputData(int *RandArray){ //输入自定义数据
int mt,n;
Loop_2:
cout<<"请输入数据个数(0<n<=5000)\nn=";
cin>>n;
if(n<=0 || n>5000){cout<<"数据超出范围:!!!\n";goto Loop_2;}
for(int j=0;j<n;j++)
{
cout<<"请输入第"<<j+1<<"个数据\nm=";
cin>>mt;
RandArray[j]=mt;
}
return n;
}

void _TestBubbleSort(int *RandArray,int n){ //冒泡排序 测试程序
cout<<"采用冒泡排序\n";
cout<<"\n从小到大\n";
BubbleSort(RandArray,n,0); //从小到大
OutPutNum(RandArray,n); //输出排序后的结果
cout<<"\n从从大到小\n";
BubbleSort(RandArray,n,1); //从大到小
OutPutNum(RandArray,n); //输出排序后的结果
InitKey();
}

void _TestInsertSort(int *RandArray,int n){ //插入排序 测试程序

cout<<"采用插入排序\n";
cout<<"\n从小到大\n";
InsertSort(RandArray,n,0); //从小到大
OutPutNum(RandArray,n); //输出排序后的结果
cout<<"\n从从大到小\n";
InsertSort(RandArray,n,1); //从大到小
OutPutNum(RandArray,n); //输出排序后的结果
InitKey();


}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics