数据结构_各种内排序性能比较_课程设计报告纯代码版
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构课程设计报告
题目:各种内排序性能的比较
学生姓名:
学号:
班级:
指导教师:
2012-6-10
实现部分
各个核心算法的代码:
#include
#include
using namespace std;
const int M=100;
int compareN=0,changeN=0; //快速排序中元素比较的次数和交换的次数
int compareN1=0,changeN1=0,K=0; //合并排序中元素比较的次数和交换的次数
void display(int r[], int n)
{
for(int i=0;i { cout.width(4); cout< } cout< } void insertsort(int r[],int n) //直接插入法排序 //待排序元素用一个数组r表示,数组有n个元素 { int a=0,b=0,k=1;//a表示元素比较的次数,b表示元素交换的次数,k 表示趟数 cout<<"插入排序的每一次的结果如下:"< cout<<"初始状态:"; display(r,n); for(int i=1;i { int temp=r[i]; //把待排序元素赋给temp int j=i-1; while((j>=0)&&(temp { a++; r[j+1]=r[j];j--; //顺序比较和移动 } a++; r[j+1]=temp; b++; cout<<"第"< k++; display(r,n); } cout<<"\t\t\t\t -->元素比较次数为 "< cout<<"\t\t\t\t -->元素交换次数为"< } void bubblesort(int r[],int n) //冒泡排序 { int a=0,b=0,k=1,flag=1; //当flag=0时停止排序(flag用于判断元素是否进行过交换) cout<<"冒泡排序的每一次的结果如下:"< cout<<"初始状态:"; display(r,n); for(int i=1;i { flag=0; //开始时元素未交换 for(int j=n-1;j>=i;j--) { a++; if(r[j] { //发生逆序 int t=r[j]; r[j]=r[j-1]; //元素后移 r[j-1]=t;flag=1; //交换,并标记发生了交换 b++; } flag=1; if(flag==0)break; } cout<<"第"< k++; display(r,n); }