首页    新闻    群组    人才    下载    博客    代码贴    论坛
给出1000个通过随机数生成的数据,分别用直接插入排...

牧云晨曦2016-12-26 12:29 发布

标题:给出1000个通过随机数生成的数据,分别用直接插入排序法、冒泡排序法、快速排序法进行排序
#include <stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
void create();
void InsertSort(int a[],  int length); 
void BubbleSort(int a[],  int length);
void QKSort(int a[],  int length);
void main() /*主函数即用户的操作界面*/

int b,flag=0; /*声明局部变量*/
while(1) /*循环输出以下信息*/
{

printf("**************************--------------------主菜单--------------------************************\n");
printf("***************-------------------------------排序-----------------************************\n");
printf(" 1.新建随机生成1000数 \n");
printf(" 2.直接插入排序法进行排序 \n");
printf(" 3.冒泡排序法进行排序 \n");
printf(" 4.快速排序法进行排序 \n"); 
printf(" 0.退出 \n");
printf(" 请输入选项0-4 \n");
printf(" 请输入你的选择:" );
scanf("%d",&b);
switch(b)
{
case 1:create();break; 
case 2:InsertSort(int a[],int length);break;/*直接插入排序法*/ 
case 3:BubbleSort(int a[],int length);break;/*冒泡排序法*/
case 4:QKSort(int a[],  int length);break; /*快速排序法进行排序*/
case 0:flag=1;break;/*退出SWITCH语句*/
default :printf("错误!");
}
if(flag) break; /*如果选择0就退出循环*/
}
}
void create() 
{
int a[1000];
srand((unsigned)time(NULL));
for(int i=0;i<1000;i++)
{

a[i]=rand()%1000;printf("%d\t",a[i]);
if(i%10==0)
printf("\n");

}
void InsSort(int a[],  int length) 
/* 对记录数组r做直接插入排序,length为数组中待排序记录的数目*/ 
{  
int i,j; 
for (i=2;i<=length;i++)  

a[0]=a[i];      /*将待插入记录存放到监视哨r[0]中*/ 
j=i-1;           
while (a[0]< a[j] )     /* 寻找插入位置 */ 

a[j+1]= a[j];  
j=j-1; 

a[j+1]=a[0];          /*将待插入记录插入到已排序的序列中*/ 

} /*  InsSort  */  
void  BubbleSort(int a[], int length ) 
/*对记录数组r做冒泡排序,length为数组的长度*/ 

int n,i,j; 
int change; 
RecordType x; 
n=length;   
change=TRUE; 
for ( i=1 ; i<= n-1 && change ;++i )  

change=FALSE; 
for ( j=1 ; j<= n-i ; ++j)  
if (a[j]> a[j+1] )   

x= a[j]; 
a[j]= a[j+1]; 
a[j+1]= x; 
change=TRUE; 
}  

} /*  BubbleSort  */  
void QKSort(int a[],int low, int high ) 
/*对记录数组r[low..high]用快速排序算法进行排序*/ 

int pos; 
if(low<high) 

pos=QKPass(a, low, high);  /*调用一趟快速排序,将枢轴元素为界划分两个子表*/ 
QKSort(a, low, pos-1);     /*对左部子表快速排序*/ 
QKSort(a, pos+1, high); /*对右部子表快速排序*/ 
 

 
 
最新话题:

为什么locateElem的返回值总是1

新人报道

刚开始学C语言,求大神来帮忙解释一下

当我键盘输入a的时候为什么会处理两行..

在WIN10中安装VFP6后

通过Fork和Join这两个单词来理解下Fo...

有关循环while()条件的问题

哥德巴赫猜想,求帮助