云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 北邮数据结构实验 第三次实验 排序

北邮数据结构实验 第三次实验 排序

  • 62 次阅读
  • 3 次下载
  • 2025/5/2 20:05:47

int exchange=Max; int bound,j; while(exchange) {

bound=exchange; exchange=0;

for(j=1;j

comparetimes[2]++;

if(parray[j]>parray[j+1]) {

parray[0]=parray[j]; parray[j]=parray[j+1]; parray[j+1]=parray[0]; exchange=j;

movetimes[2]+=3; } } }

return 0; }

/***********************************************************快速排**********************************************************************/ int Sort::QuickSort(long int parray[]) {

QuickSortRecursion(parray,1, Max); return 0; }

int Sort::QuickSortRecursion(long int parray[], int first=1, int end=Max) {

if (first

int pivot=QuickSortPatition(parray, first, end);

QuickSortRecursion(parray, first, pivot-1);//左侧子序列排序 QuickSortRecursion(parray, pivot+1, end); //右侧子序列排序 }

return 0; }

int Sort::QuickSortPatition(long int r[], int first, int end ) {

int i=first; int j=end; int temp;

第17页

while (i

while (i

j--;

comparetimes[3]++;

} //右侧扫描 if (i

temp=r[i]; //将较小记录交换到前面 r[i]=r[j]; r[j]=temp; i++;

movetimes[3]+=3; }

while (i

i++;

comparetimes[3]++;

} //左侧扫描 if (i

temp=r[j]; r[j]=r[i];

r[i]=temp; //将较大记录交换到后面 j--;

movetimes[3]+=3; } }

return i; //i为轴值记录的最终位置 }

/***********************************************************选择排**********************************************************************/ int Sort::SelectSort(long int parray[]) {

int i,j,index,temp;

for (i=1; i

index=i;

for (j=i+1; j<=Max; j++) {

comparetimes[4]++; //在无序区中选取最小记录 if (parray[j]

第18页

}

if (index!=i) {

temp=parray[i];

parray[i]=parray[index]; parray[index]=temp; movetimes[4]+=3; } }

return 0; }

/*************************************************************堆排序***********************************************************************/ int Sort::HeapSort(long int parray[]) {

int i;

for (i=Max/2; i>=1; i--)

HeapSortSift(parray, i, Max) ; for (i=1; i

parray[0]=parray[Max-i+1]; parray[Max-i+1]=parray[1]; parray[1]=parray[0]; movetimes[5]+=3;

HeapSortSift(parray, 1, Max-i); }

return 0; }

void Sort::HeapSortSift(long int parray[], int k, int m) {

int i,j; i=k;

j=2*i; //置i为要筛的结点,j为i的左孩子 while (j<=m) //筛选还没有进行到叶子 {

if (j

j++;

comparetimes[5]++;

} //比较i的左右孩子,j为较大者 if (parray[i]>parray[j]) {

comparetimes[5]++;

第19页

break;

} //根结点已经大于左右孩子中的较大者 else {

parray[0]=parray[i]; parray[i]=parray[j]; parray[j]=parray[0]; movetimes[5]+=3; i=j;

j=2*i; //被筛结点位于原来结点j的位置 } } }

/************************************************************归并排序*********************************************************************/ int Sort::MergeSort(long int parray[]) {

long int r1[Max+1]; int h(1);

while (h

MergePass(parray, r1, h); //归并 h=2*h;

MergePass(r1, parray, h); h=2*h; }

return 0; }

void Sort::Merge(long int parray[], long int r1[], int s, int m, int t) //一次归并 {

int i=s; int j=m+1; int k=s;

while (i<=m && j<=t) {

comparetimes[6]++; movetimes[6]++;

if (parray[i]<=parray[j]) {

第20页

搜索更多关于: 北邮数据结构实验 第三次实验 排序 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

int exchange=Max; int bound,j; while(exchange) { bound=exchange; exchange=0; for(j=1;jparray[j+1]) { parray[0]=parray[j]; parray[j]=parray[j+1]; parray[j+1]=parray[0]; exchange=j; movetimes[2]+=3; } } } return 0; } /**********************

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com