各个排序算法及其代码.doc

各个排序算法及其代码.doc

ID:50835931

大小:44.50 KB

页数:5页

时间:2020-03-15

各个排序算法及其代码.doc_第1页
各个排序算法及其代码.doc_第2页
各个排序算法及其代码.doc_第3页
各个排序算法及其代码.doc_第4页
各个排序算法及其代码.doc_第5页
资源描述:

《各个排序算法及其代码.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、常见排序算法的实现(一)→插入排序插入排序是最简单最直观的排序算法了,它的依据是:遍历到第N个元素的时候前面的N-1个元素已经是排序好的了,那么就查找前面的N-1个元素把这第N个元素放在合适的位置,如此下去直到遍历完序列的元素为止。  算法的复杂度也是简单的,排序第一个需要1的复杂度,排序第二个需要2的复杂度,因此整个的复杂度就是  1+2+3+……+N=O(N^2)的复杂度。[详细内容]voidinsert_sort(ints[],intn){inti,j,temp;for(i=1;i

2、s[i];j=i-1;while(j>=0&&s[j]>temp){s[j+1]=s[j];j--;}s[j+1]=temp;}}常见排序算法的实现(二)→shell排序shell排序是对插入排序的一个改装,它每次排序把序列的元素按照某个增量分成几个子序列,对这几个子序列进行插入排序,然后不断缩小增量扩大每个子序列的元素数量,直到增量为一的时候子序列就和原先的待排列序列一样了,此时只需要做少量的比较和移动就可以完成对序列的排序了。[详细内容]voidshell_sort(ints[],intn){//希尔intd

3、=0;inti,j,temp;for(d=n/2;d>=1;d/=2){for(i=d;i=0&&s[j]>temp){s[j+d]=s[j];j=j-d;}s[j+d]=temp;}}}常见排序算法的实现(四)→冒泡排序冒泡排序算法的思想:很简单,每次遍历完序列都把最大(小)的元素放在最前面,然后再对剩下的序列从父前面的一个过程,每次遍历完之后待排序序列就少一个元素,当待排序序列减小为只有一个元素的时候排序就结束了。因此,复杂度在最坏的情况下是O(

4、N^2)。voidbubble_sort(ints[],intn){inti,j;inttemp;boolflag;for(i=n-1;i>=1;i--){flag=true;for(j=0;js[j+1]){temp=s[j];s[j]=s[j+1];s[j+1]=temp;flag=false;}}if(flag==true)break;}}常见排序算法的实现(五)→快速排序快速排序的算法思想:选定一个枢纽元素,对待排序序列进行分割,分割之后的序列一个部分小于枢纽元素,一个部分

5、大于枢纽元素,再对这两个分割好的子序列进行上述的过程。 //对一个给定范围的子序列选定一个枢纽元素,执行完函数之后返回分割元素所在的位置,//在分割元素之前的元素都小于枢纽元素,在它后面的元素都大于这个元素intpartition(ints[],intlow,inthigh){inttemp;intpivo=s[low];while(low=pivo){high--;}-----à此处可以加if(low

6、]=s[low];s[low]=temp;while(low

7、的算法思想:把待排序序列分成相同大小的两个部分,依次对这两部分进行归并排序,完毕之后再按照顺序进行合并。voidmerge(ints[],intlow,intm,inthigh){inti,j,k=0;intt[100];for(i=low,j=m+1;i<=m&&j<=high;){if(s[i]<=s[j]){t[k++]=s[i++];}else{t[k++]=s[j++];}}while(i<=m)t[k++]=s[i++];while(j<=high)t[k++]=s[j++];for(i=low,j=

8、0;j

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

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

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