实验九各种排序算法性能比较

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程名称: 《数据结构》课程设计

课程设计题目: 9、各种排序算法性能比较姓名:费富增

院系: 计算机学院

专业:计算机科学与技术

年级:2012

学号:E01214108

指导教师:王爱平

2014年10月17日

目录

1课程的目的 (1)

2 需求分析 (1)

3 课程设计报告内容 (1)

3.1概要设计 (1)

3.2详细设计 (2)

3.3调试分析 (9)

3.4用户手册 (9)

3.5测试结果 (9)

3.6程序清单 (9)

4 小结 (9)

5 参考文献 (9)

1.课程设计的目的

(1) 熟练使用C 语言编写程序,解决实际问题;

(2) 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;

(3) 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;

(4) 提高综合运用所学的理论知识和方法独立分析和解决问题的能力;

2.需求分析

(1)使用数组来存放产生的2000个随机数

(2)编写统计程序运行时间的函数

(3)编写快速排序、冒泡排序、插入排序、梳排序四种排序算法的函数

(4 ) 编写主函数,控制程序运行

3文件串的加密的设计

3.1概要设计

1.函数

(1)使用四种排序算法:插入排序、冒泡排序、快速排序、梳排序

(2)使用clock()函数来统计每种排序方法的计算时间。

源程序:

#include

#include

#include

#define MAX 40000

void insertSort(int a[], int len)//插入排序

{

int i, j, temp;

for(i = 1; i < len; i ++)

{

temp = a[i];

for(j = i - 1; j >= 0; j --)

{

if(a[j] > temp)

{

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

}else

{

break;

}}

a[j + 1] = temp;

}}

void Bubble(int a[],int len)//冒泡排序{

int length=len;

int i=0;

int j=0;

for(i=0;i

{

for(j=0;j

{

if(a[j]>a[j+1])

{

int temp=a[j];

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

a[j+1]=temp;

}

}

length--;

j=0;

}

}

int partions(int l[],int low,int high)//快速排序{

int prvotkey=l[low];

l[0]=l[low];

while (low

{

while (low=prvotkey)

--high;

l[low]=l[high];

while (low

++low;

l[high]=l[low];

}

l[low]=l[0];

return low;

}

void qsort(int l[],int low,int high)

{

int prvotloc;

if(low

{

prvotloc=partions(l,low,high);

qsort(l,low,prvotloc-1);

qsort(l,prvotloc+1,high);

}

}

void quicksort(int l[],int n)

{

qsort(l,1,n);

}

void combsort(int a[], int n) //梳排序

{

float shrink_factor = 1.3;

int gap = n, swapped = 1, swap, i;

while ((gap > 1) || swapped)

{

if (gap > 1) gap = gap / shrink_factor;

swapped = 0;

i = 0;

while ((gap + i) < n)

{

if (a[i] - a[i + gap] > 0)

{

swap = a[i];

a[i] = a[i + gap];

a[i + gap] = swap;

swapped = 1;

}

++i;

}}}

int main()

{ printf("正在进行排序,请稍等:\n");

printf(".......\n");

int number[MAX] = {0};

int number1[MAX] = {0};

int number2[MAX] = {0};

int number3[MAX] = {0};

int number4[MAX] = {0};

int i;

srand((unsigned) time(NULL)); /*播种子*/

for(i = 0; i < MAX; i++)

{

number[i] = rand() % 20000; /*产生101以内的随机整数*/

number1[i]=number2[i]=number3[i]=number4[i]=number[i];

while(number[i]==0)

{

number[i] = rand() % 20000;

number1[i]=number2[i]=number3[i]=number4[i]=number[i];

}

}

clock_t begin1, end1; //快速排序并计算时间

double cost1;

begin1 = clock();

相关文档
最新文档