//排序
//程序:张建波
//时间: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();
}
分享到:
相关推荐
C++数据结构-排序 源代码
数据结构-排序.ppt
数据结构-排序PPT课件.pptx
数据结构-排序课件,严蔚敏课本课件,比较好用
数据结构-排序-PPT
数据结构-排序算法的实现(代码+报告)
数据结构-排序.pdf
java基础笔记数据结构-排序二叉树,详细描述了排序二叉树的原理及其实现方式,基础数据结构。
Java语言编写的数据结构-排序。包括冒泡排序、选择排序、插入排序、希尔排序、快排、堆排序。
数据结构-排序(包括常用的插入排序,选择排序,冒泡排序等)
数据结构-排序PPT学习教案.pptx
java基础笔记数据结构-排序算法,详细描述了排序算法的原理及其实现方式,基础数据结构。
Java基础复习笔记10数据结构-排序二叉树。
数据结构-排序(1).ppt该文档详细且完整,值得借鉴下载使用,欢迎下载使用,有问题可以第一时间联系作者~
数据结构--排序--思维导图.pdf
数据结构--内部排序算法 1、下列排序算法中,_____________排序在某趟结束后不一定能选出一个元素放到其最 终的位置上。 (1)选择 (2)冒泡 (3)归并 (4)堆 2、下列排序算法中,依次将待排序列中的元素和前面...
数据结构实验之一,排序问题,有希尔排序、冒泡排序、快速排序、堆排序
一、实验目的 1、掌握排序的不同方法,并能用高级语言实现排序算法 二、实验内容 1、实现希尔排序算法。