资源简介

六种内部排序算法比较:直接插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序。包含实验报告和源代码设计。

资源截图

代码片段和文件信息

#include 
#include 
#include  
#define L 8 //排序元素个数 
#define FALSE 0 
#define TRUE 1 

typedef struct 
{ 
int key; 
char otherinfo; 
}RecType; 

typedef RecType Seqlist[L+1]; 
int num; //定义排序趟数的全局变量 
Seqlist R; 
//直接插入排序 
void Insertsort() 
{ 
int ijkm=0; 
printf(“\n\t\t原始数据为(按回车键开始排序):\n\t\t“); 
for(k=1;k<=L;k++) 
{ 
printf(“%5d“R[k].key); 
} 
getchar(); 
printf(“\n“); 
for(i=2;i<=L;i++) 
{ 
if(R[i].key{ 
R[0]=R[i]; 
j=i-1; 
while(R[0].key{ 
R[j+1]=R[j]; 
j--; 
} 
R[j+1]=R[0]; 
} 
m++; 
printf(“\t\t第%d趟排序结果为(按回车键继续):\n\t\t“m); 
for(k=1;k<=L;k++) 
{ 
printf(“%5d“R[k].key); 
} 
getchar(); 
printf(“\n“); 
} 
printf(“\n\t\t排序的最终结果是:\n\t\t“); 
for(i=1;i<=L;i++) 
{ 
printf(“%5d“R[i].key); 
} 
printf(“\n“); 
} 
//希尔排序 
void Shellsort() 
{ 
int ijgapxm=0k; 
printf(“\n\t\t原始数据为(按回车键开始排序):\n\t\t“); 
for(k=1;k<=L;k++) 
{ 
printf(“%5d“R[k].key); 
} 
getchar(); 
printf(“\n“); 
gap=L/2; 
while(gap>0) 
{ 
for(i=gap+1;i<=L;i++) 
{ 
j=i-gap; 
while(j>0) 
{ 
if(R[j].key>R[j+gap].key) 
{ 
x=R[j].key; 
R[j].key=R[j+gap].key; 
R[j+gap].key=x; 
j=j-gap; 
} 
else 
{ 
j=0; 
} 
} 
} 
gap=gap/2; 
m++; 
printf(“\t\t第%d趟排序结果为(按回车键开始排序):\n\t\t“m); 
for(k=1;k<=L;k++) 
{ 
printf(“%5d“R[k].key); 
} 
getchar(); 
printf(“\n“); 
} 
printf(“\n\t\t排序的最终结果是:\n\t\t“); 
for(i=1;i<=L;i++) 
{ 
printf(“%5d“R[i].key); 
} 
printf(“\n“); 
} 
//冒泡排序 
void Bubblesort() 
{ 
int ijk; 
int exchange; 
printf(“\n\t\t原始数据为(按回车键开始排序):\n\t\t“); 
for(k=1;k<=L;k++) 
{ 
printf(“%5d“R[k].key); 
} 
getchar(); 
printf(“\n“); 
for(i=1;i{ 
exchange=FALSE; 
for(j=L;j>=i+1;j--) 
{ 
if(R[j].key{ 
R[0].key=R[j].key; 
R[j].key=R[j-1].key; 
R[j-1].key=R[0].key; 
exchange=TRUE; 
} 
} 
if(exchange) 
{ 
printf(“\t\t第%d趟排序结果为(按回车键开始排序):\n\t\t“i); 
for(k=1;k<=L;k++) 
{ 
printf(“%5d“R[k].key); 
} 
getchar(); 
printf(“\n“); 
} 
} 
printf(“\n\t\t排序的最终结果是:\n\t\t“); 
for(i=1;i<=L;i++) 
{ 
printf(“%5d“R[i].key); 
} 
printf(“\n“); 
} 

int Partition(int iint j) //i和j为形式参数,分别代表low和high 
{ 
RecType pirot=R[i]; 
while(i{ 
while(i=pirot.key) 
{ 
j--; 
} 
if(i{ 
R[i++]=R[j]; 
} 
while(i{ 
i++; 
} 
if(i{ 
R[j--]=R[i]; 
} 
} 
R[i]=pirot; 
return i; 
} 
//递归形式为快速排序 
void Quicksort(int lowint high) 
{ 
int pirotposk; 
if(low{ 
pirotpos=Partition(lowhigh); 
num++; 
printf(“\t\t第%d趟排序结果为(按回车键开始排序):\n\t\t“num); 
for(k=1;k<=L;k++) 
{ 
printf(“%5d“R[k].key); 
} 
getchar(); 
printf(“\n“); 
Quicksort(lowpirotpos-1); 
Quicksort(pirotpos+1high); 
} 
} 
//选择排序 
void Selectsort() 
{ 
int ijkh; 
printf(“\n\t\t原始数据为(按回车键开始排序):\n\t\t“); 
for(k=1;k<=L;k++) 
{ 
printf(“%5d“R[k].key); 
} 
getchar(); 
printf(“\n“); 
for(i=1;i{ 
h=i; 
for(j=i+1;j<=L;j++) 
{ 
if

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    ..A.SH.       162  2015-12-27 14:14  排序算法代码实现及比较\~$2014321081073 梁燕 实验五.docx

     文件       7889  2016-01-05 10:10  排序算法代码实现及比较\代码\b\b.cpp

     文件       4224  2016-01-05 10:37  排序算法代码实现及比较\代码\b\b.dsp

     文件        527  2016-01-05 10:09  排序算法代码实现及比较\代码\b\b.dsw

     文件     412588  2017-12-04 21:20  排序算法代码实现及比较\代码\b\b.exe

     文件      33792  2016-01-05 10:37  排序算法代码实现及比较\代码\b\b.ncb

     文件      48640  2016-01-05 10:37  排序算法代码实现及比较\代码\b\b.opt

     文件        871  2016-01-05 10:10  排序算法代码实现及比较\代码\b\b.plg

     文件     204877  2016-01-05 10:10  排序算法代码实现及比较\代码\b\Debug\b.exe

     文件     213088  2016-01-05 10:10  排序算法代码实现及比较\代码\b\Debug\b.ilk

     文件      26506  2016-01-05 10:10  排序算法代码实现及比较\代码\b\Debug\b.obj

     文件     418816  2016-01-05 10:10  排序算法代码实现及比较\代码\b\Debug\b.pdb

     文件      33792  2016-01-05 10:16  排序算法代码实现及比较\代码\b\Debug\vc60.idb

     文件      45056  2016-01-05 10:10  排序算法代码实现及比较\代码\b\Debug\vc60.pdb

     文件     336896  2017-12-04 21:24  排序算法代码实现及比较\内部排序算法比较.doc

     目录          0  2017-12-04 21:21  排序算法代码实现及比较\代码\b\Debug

     目录          0  2017-12-04 21:21  排序算法代码实现及比较\代码\b

     目录          0  2017-12-04 21:21  排序算法代码实现及比较\代码

     目录          0  2017-12-04 21:24  排序算法代码实现及比较

----------- ---------  ---------- -----  ----

              1787724                    19


评论

共有 条评论