c语言经典排序算法(8种-含源代码)

c语言经典排序算法(8种-含源代码)

ID:42615317

大小:37.50 KB

页数:8页

时间:2019-09-18

c语言经典排序算法(8种-含源代码)_第1页
c语言经典排序算法(8种-含源代码)_第2页
c语言经典排序算法(8种-含源代码)_第3页
c语言经典排序算法(8种-含源代码)_第4页
c语言经典排序算法(8种-含源代码)_第5页
资源描述:

《c语言经典排序算法(8种-含源代码)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、c语言经典排序算法(8种-含源代码).txt蜜蜂整日忙碌,受到赞扬;蚊子不停奔波,人见人打。多么忙不重要,为什么忙才重要。天行健,君子以自强不息常见经典排序算法1.希尔排序2.二分插入法3.直接插入法4.带哨兵的直接排序法5.冒泡排序6.选择排序7.快速排序8.堆排序一.希尔(Shell)排序法(又称宿小增量排序,是1959年由D.L.Shell提出来的)/*Shell排序法*/#includevoidsort(intv[],intn){intgap,i,j,temp;for(gap=n/2;gap>0;gap/=2)/*设置排序的步

2、长,步长gap每次减半,直到减到1*/{for(i=gap;i=0)&&(v[j]>v[j+gap]);j-=gap)/*比较相距gap远的两个元素的大小,根据排序方向决定如何调换*/{temp=v[j];v[j]=v[j+gap];v[j+gap]=temp;}}}}二.二分插入法/*二分插入法*/voidHalfInsertSort(inta[],intlen){inti,j,temp;intlow,high,mid;for(i=1;i

3、保存但前元素*/low=0;high=i-1;while(low<=high)/*在a[low...high]中折半查找有序插入的位置*/{mid=(low+high)/2;/*找到中间元素*/if(a[mid]>temp)/*如果中间元素比但前元素大,当前元素要插入到中间元素的左侧*/{high=mid-1;}else/*如果中间元素比当前元素小,但前元素要插入到中间元素的右侧*/{low=mid+1;}}/*找到当前元素的位置,在low和high之间*/for(j=i-1;j>high;j--)/*元素后移*/{a[j+1]=a[j];}a[hig

4、h+1]=temp;/*插入*/}}三.直接插入法/*直接插入法*/voidInsertionSort(intinput[],intlen){inti,j,temp;for(i=1;i-1&&input[j]>temp;j--)/*从当前元素的上一个元素开始查找合适的位置*/{input[j+1]=input[j];/*一边找一边移动元素*/input[j]=temp;}}}四.带哨兵的直接排序法/***带哨兵的直接插入排序,数组的第一个元素

5、不用于存储有效数据*将input[0]作为哨兵,可以避免判定input[j]中,数组是否越界*因为在j--的过程中,当j减小到0时,变成了input[0]与input[0]*自身进行比较,很明显这个时候说明位置i之前的数字都比input[i]小*位置i上的数字不需要移动,直接进入下一轮的插入比较。**/voidInsertionSortWithPiquet(intinput[],intlen){inti,j;for(i=2;i

6、ut[i];for(j=i-1;input[j]>input[0];j--){input[j+1]=input[j];input[j]=input[0];/*input[j]一直都是排序的元素中最大的那一个*/}}}五.冒泡法/*冒泡排序法*/voidBublesort(inta[],intn){inti,j,k;for(j=0;ja[i+1])/*把值比较大的元素沉到底*/{k=a[i]

7、;a[i]=a[i+1];a[i+1]=k;}}}}六.选择排序法/*算法原理:首先以一个元素为基准,从一个方向开始扫描,*比如从左至右扫描,以A[0]为基准。接下来从A[0]...A[9]*中找出最小的元素,将其与A[0]交换。然后将基准位置右*移一位,重复上面的动作,比如,以A[1]为基准,找出*A[1]~A[9]中最小的,将其与A[1]交换。一直进行到基准位*置移到数组最后一个元素时排序结束(此时基准左边所有元素*均递增有序,而基准为最后一个元素,故完成排序)。*/voidSelectsort(intA[],intn){inti,j,min,te

8、mp;for(i=0;i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。