- 1、本文档共34页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[电脑基础知识]数据结构9第八章:排序
排序 主讲教师:李长云 班 级:信息系 教 室:多媒体 顺序表的直接插入排序算法 顺序表的直接插入排序算法如下: void zjcrpxs(int r[],int n) {//顺序表的直接插入排序 int i,j,t; r[0]=min; for (i=2;i=n;i++) { t=r[i]; j=i-1; while(tr[j]) r[j+1]=r[j--]; r[j+1]=t;} } 图 例 单链表表示的直接插入排序算法 用单链表表示的直接插入排序算法如下: JD* zjcrpxl(JD *h){//用单链表表示的直接插入排序 JD *t,*p,*r,*q; if(h!=NULL){t=h; while (t-link!=NULL) {p=t-link; if((p-key)(h-key)) { t-link=p-link;p-link=h;h=p;} else{q=h;r=q-link; while((p-key)(r-key)) {q=r;r=q-link;} if(p==r) t=p; else{ t-link=p-link; p-link=r;q-link=p; } } } }return h;} 二分插入排序算法 二分插入排序算法如下: void rffpx(int r[],int n) {//二分插入排序 int i,j,m,t,w,x; for(i=1;in;i++) {x=r[i];t=0;w=i-1; while(t=w) {m=(t+w)/2; if(xr[m]) w=m-1; else t=m+1;} for (j=i-1;j=t;j--) r[j+1]=r[j]; r[t]=x;}} 图 例 图 例 希尔排序的算法 希尔排序的算法如下: void shellpx(int r[],int n) {//希尔排序 int x,i,j,k; k=n/2; while(k=1) {for(i=k+1;i=n;i++) {x=r[i];j=i-k; while((j0)(x.keyr[j].key)) {r[j+k]=r[j];j-=k;} r[j+k]=x;} k=k/2;}} 图 例 冒泡排序算法 冒泡排序算法如下: void qppx(int r[],int n) {//冒泡排序 int i,j,k,x; j=1;k=1; while ((jn)(k0)) {k=0; for(i=0;in-j;i++) if (r[i+1]r[i]) {k++;x=r[i];r[i]=r[i+1];r[i+1]=x;}
文档评论(0)