`
insertyou
  • 浏览: 900843 次
  • 性别: 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();


}

分享到:
评论

相关推荐

    数据结构-排序课件

    数据结构-排序课件,严蔚敏课本课件,比较好用

    数据结构-排序算法的实现(代码+报告)

    ### 数据结构-排序算法的实现知识点详解 #### 实验背景及目标 本次实验的主要目的是让学生深入理解并掌握几种常见的排序算法及其应用场景。通过动手实践,不仅能够加深对各种排序算法工作原理的理解,还能够培养...

    数据结构-排序.pdf

    数据结构-排序.pdf

    数据结构-排序(包括常用的插入排序,选择排序,冒泡排序等)

    数据结构-排序(包括常用的插入排序,选择排序,冒泡排序等)

    数据结构实验——排序

    一、实验目的 1、掌握排序的不同方法,并能用高级语言实现排序算法 二、实验内容 1、实现希尔排序算法。

    数据结构-排序算法对比

    数据结构——排序算法对比

    数据结构-排序算法性能分析

    其中的数据要用随机数产生(如10000个),至少用5组不同的数据做比较,再使用各种算法对其进行排序,记录其排序时间,再汇总比较。 (3) 演示程序以人机对话的形式进行。每次测试完毕显示各种比较指标值的列表,比较...

    数据结构--快速排序C++源代码

    数据结构--快速排序C++源代码,自己编写调试,代码简单易懂,不长

    数据结构--排序--思维导图.pdf

    "数据结构--排序--思维导图" 数据结构中排序是指将一组无序的记录序列按照一定的规则排列成有序的序列,排序的目的是为了提高数据的存储和检索效率。排序算法的稳定性是指在排序过程中,如果待排序表中有两个元素Ri...

    数据结构-----排序

    计算机专业 上机报告 数据结构上机报告-----排序

    数据结构- C语言 -排序.md

    数据结构- C语言 -排序.md

    数据结构-排序整理 md版

    主要是CSDN上广告太多啦,给大家提供md文档,简洁美观。完全是那篇博客的版本喔。

    数据结构-各种排序完整示例程序

    在计算机科学领域,数据结构和排序算法是至关重要的基础,它们直接影响到程序的效率和性能。本资源包“数据结构-各种排序完整示例程序”提供了C语言实现的各种经典排序算法,帮助学习者深入理解并掌握这些算法的实际...

    数据结构--排序 很细致

    数据结构中的排序是计算机科学中一个基础且重要的概念,它涉及到如何有效地组织和处理大量数据。排序算法的主要目标是将一组无序的数据元素按照特定的标准(通常是升序或降序)排列成一个有序序列。本篇文章主要介绍...

    数据结构思维导图-排序.pdf

    以上是数据结构中关于排序的一些基本知识,包括排序的稳定性、比较次数、内部排序和外部排序的定义,以及直接插入排序、折半插入排序、希尔排序和冒泡排序的原理和特点。这些排序算法各有优缺点,选择哪种排序算法取...

    数据结构---二叉排序树.doc

    数据结构---二叉排序树.doc

    数据结构-C语言版:DS09-排序.ppt

    数据结构-C语言版:DS09-排序.ppt

    图解数据结构--使用Java

    利用大量且丰富的图示与范例, 详解复杂的抽象理论,从最基本的数据结构概念开始 说明,再以Java工具加以诠释阵列结构、堆栈、链表 、队列、排序、查找等重要的概念,引领读者抓住重 点轻松进入数据结构的学习领域

    数据结构--课程设计(多种排序算法 有界面)

    数据结构 课程设计 多种排序算法 有界面 数据结构 课程设计 多种排序算法 有界面 数据结构 课程设计 多种排序算法 有界面 数据结构 课程设计 多种排序算法 有界面 数据结构 课程设计 多种排序算法 有界面

    数据结构--九种排序算法 --排序001.cpp

    此文件为数据结构中的九种排序算法,包含一些排序方法的过程,其九种排序包括:直接插入排序,折半插入排序,希尔排序,冒泡排序,快速排序,选择排序,堆排序,归并排序,基数排序!

Global site tag (gtag.js) - Google Analytics