- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 内部排序
第7章 内部排序;概 述; 简单插入排序;;算法设计:
保留 list[0]不用,从第i(i=2)个数据开始,将list[i]放在list[0],如果list[i]list[i-1],则从j=i-1开始递减操作,只要list[j]list[0],都将它们后移,最后将list[0]赋给list[j+1]。;21;;21;;void insertion_sort(int list[ ], int N)
/* perform a insert sort ascending on the list */
{ int i,j;
for (i=2;iN;i++)
{
if(list[i]list[i-1])
{
list[0]=list[i];
for (j = i-1 ; list[0] list[j]; j- -)
list[j+1]=list[j];
list[j+1]=list[0];
}
} };3、性能分析:
若待排序记录是有序的情况下,每插入一个记录
只进行 1 次记录比较,故整个过程只进行(n-1)次
比较;若待排序的每记录完全是逆序的情况下, 每
插入一个记录需要进行j次比较,故整个排序过程进
行(n(n-1)/2)次比较。
简单插入排序是稳定的。但它只适合于记录个??
较少的场合。; 简单选择排序;;80 54 23 13 55 61;Program( Select Sort ):; 希尔排序;;Program( Shell’s Sort ):;冒泡排序;2、应用举例:;21;25*;void Bubble (int rec[],int n)
{ int i,j; int temp;
for (i=0;in;i++)
for (j=0;jn-i;j++)
if (rec[j] rec[j+1])
{ temp=rec[j];
rec[j]=rec[j+1];
rec[j+1]=temp;
}
} ;void Bubble (int rec[],int n)
{ int i, j, temp, flag=0;
for (i=0; in flag= =0; i++)
{ flag=1;
for (j=0;jn-i;j++)
if (rec[j] rec[j+1])
{ temp=rec[j];
rec[j]=rec[j+1];
rec[j+1]=temp;
flag=0;
}
} ;快速排序;;2、应用举例:;③ 32 54 23 38 77 60;⑥ 23 [32] 54 38 77 60;⑨ 23 32 54 38 77 60;⑿ 23 32 38 54 77 60;⒂ 23 32 38 54 60 77;void quicksort(int x[],int l,int r)
{ int i,j,k;
i=l;j=r;k=x[l];
while(ij)
{ while(ij kx[j]) j--;
if(ij)
{ x[i]=x[j]; i++; }
while(ij kx[i]) i++;
if(ij)
{ x[j]=x[i]; j--; }
}
x[i]=k;
if(il) quicksort(x,l,i-1);
if(ir) quicksort(x,j+1,r);
}
文档评论(0)