网站大量收购闲置独家精品文档,联系QQ:2885784924

程序:第10章:内排序.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

PAGE

程序设计经典教案

程序设计经典教案

第10章内排序

程序10.1简单选择排序

templateclassT

voidSelectSort(TA[],intn)

{

intsmall;

for(inti=0;in-1;i++){执行n-1趟

small=i;先假定待排序序列中第一个元素为最小

for(intj=i+1;jn;j++)每趟扫描待排序序列n-i-1次

if(A[j]A[small])small=j;如果扫描到一个比最小值元素还小的,则记下其下标

Swap(A[i],A[small]);最小元素与待排序序列中第一个元素交换

}

}

程序10.2直接插入排序

templateclassT

voidInsertSort(TA[],intn)

{

for(inti=1;in;i++){执行n-1趟

intj=i;

Ttemp=A[i];待插入元素存入临时变量

while(j0tempA[j-1]){从后往前查找插入位置

A[j]=A[j-1];j--;A[j-1]元素后移,j指针前移

}

A[j]=temp;待插入元素存入找到的插入位置

}

}

程序10.3冒泡排序

templateclassT

voidBubbleSort(TA[],intn)

{

inti,j,last;

i=n-1;

while(i0){最多进行n-1趟

last=0;进入循环就将last置成0

for(j=0;ji;j++)从上往下进行相邻元素的两两比较

if(A[j+1]A[j]){

Swap(A[j],A[j+1]);由于后者小,故交换

last=j;有交换就将last置成j

}

i=last;如果一趟排序中没有交换元素,则last为0

}

}

程序10.4快速排序

templateclassT

voidQuickSort(TA[],intn)

{

QSort(A,0,n-1);以初始序列为待排序序列开始快速排序

}

templateclassT

voidQSort(TA[],intleft,intright)left和right为待排序序列的下界和上界

{

inti,j;

if(leftright){若待排序序列多于一个元素,则继续快速排序

i=left;j=right+1;确定待排序序列的游动指针i,j

do{开始一趟快速排序,A[left]作为分割元素

doi++;while(A[i]A[left]);i指针从左往右找第一个分割元素的元素

doj--;while(A[j]A[left]);j指针从右往左找第一个分割元素的元素

if(ij)Swap(A[i],A[j]);若ij,则交换两个元素

}while(ij);若ij,则继续本趟排序

Swap(A[left],A[j]);交换分割元素A[left]和A[j]的位置

QSort(A,left,j-1);对低端序列快速排序

QSort(A,j+1,right);对高端序列快速排序

}

}

程序10.5两路合并的C++程序

templateclassT

voidMerge(TA[],inti1,intj

文档评论(0)

shakali + 关注
实名认证
内容提供者

当代思想家、哲学家、批评家

1亿VIP精品文档

相关文档