- 1
- 0
- 约1.01万字
- 约 15页
- 2017-06-08 发布于北京
- 举报
算法排序
/xiajuarticle/details/6898246
下面简要总结了常用的一些排序算法。如有错误,还请大家指正、见谅~~谢谢~~
【1】插入排序:
是一个对少量元素进行排序的有效算法。实现比较简单。时间复杂度:O(n^2),空间复杂度:O(1)。是稳定的排序方法。
代码:
view plaincopy to clipboardprint?
//insertion?sort ??
#include?iostream ??
using?namespace?std;??
??
//insertion?sort ??
void?InsertionSort(int?*a,int?n)??
{??
????int?temp;??
????for(int?i?=?1;i??n;++i)??
????{??
????????temp?=?*(a?+?i);??
????????int?j?=?i?-?1;??
????????while(j?=?0??*(a?+?j)??temp)??
????????{??
????????????*(a?+?j?+?1)?=?*(a?+?j);??
????????????--j;??
????????}??
????????*(a?+?j?+?1)?=?temp;??
????}??
}??
??
int?main()??
{??
????int?n,temp;??
????coutplease?input?the?number?of?the?values?that?need?to?sort:endl;??
????cinn;??
????int?*a?=?(int*)malloc(n?*?sizeof(int));??
????coutplease?input?each?value:endl;??
????for(int?i?=?0;i??n;++i)??
????{??
????????cintemp;??
????????*(a?+?i)?=?temp;??
????}??
????/*?
????//insertion?sort?
????for(int?i?=?1;i??n;++i)?
????{?
????????temp?=?*(a?+?i);?
????????int?j?=?i?-?1;?
????????while(j?=?0??*(a?+?j)??temp)?
????????{?
????????????*(a?+?j?+?1)?=?*(a?+?j);?
????????????--j;?
????????}?
????????*(a?+?j?+?1)?=?temp;?
????}*/??
????InsertionSort(a,n);??
??
????coutthe?values?after?sort:endl;??
????for(int?i?=?0;i??n;++i)??
????????cout*(a?+?i)?;??
view plaincopy to clipboardprint?
free(a);??
view plaincopy to clipboardprint?
}??
数据测试:
上述代码可以改进的一个地方是:在查找插入位置的时候可以采用二分查找,但是这样依然不可以把时间复杂度降低为O(nlogn),因为移动元素的复杂度没有降低。所以时间复杂度仍然是O(n^2)。
做此改进需要添加函数InsertLoc用于二分查找需要插入的位置,以及修改函数InsertionSort的实现。具体如下:
view plaincopy to clipboardprint?
//改进:用二分查找来找到插入的位置 ??
//在数组a[low]a[high]查找val插入的位置 ??
int?InsertLoc(int?*a,int?low,int?high,int?val)??
{??
????if(low?==?high)??
????{??
????????if(val??*(a?+?low))return?(low?+?1);??
????????else??
????????????return?low;??
????}??
????int?mid?=?(low?+?high)?/?2;??
????if(val??*(a?+?mid)??val??*(a?+?mid?+?1))??
????????return?InsertLoc(a,mid?+?1,high,val);??
????else?if(val??*(a?+?mid)??val??*(a?+?mid?+?1))??
????????return?InsertLoc(a,l
您可能关注的文档
- CNACR对经济活动分类产品范围的说明.doc
- CNET创始人如何做到5年挥霍18亿美元.doc
- cocos引擎—从莉莉丝的彩蛋说起:如何给代码加密.doc
- codesoft简易使用手册.doc
- cognos基于条件制作动态报表.doc
- comebacktolife中文歌词.doc
- cooledit后期效果处理指南.doc
- COOLPRO2.1使用说明.doc
- CorelDRAWX4常用快捷键.doc
- coreldraw制作变形文字.doc
- 2026年及未来5年内中国液体氩气行业投资前景及策略咨询研究报告.docx
- 2026年及未来5年内中国黄铜合页行业投资前景及策略咨询研究报告.docx
- 2026年及未来5年内中国竹工艺家具行业投资前景及策略咨询研究报告.docx
- 2025年中国微机数显自动分析仪市场调查研究报告.docx
- 2026年及未来5年内中国微尘白色粉笔行业投资前景及策略咨询研究报告.docx
- 2025年中国微电脑型压胶机市场调查研究报告.docx
- 2026年及未来5年内中国数字化等功游泳训练测试系统行业投资前景及策略咨询研究报告.docx
- 2025年中国圆形花瓶市场调查研究报告.docx
- 2026年及未来5年内中国植物纤维静淀过滤器行业投资前景及策略咨询研究报告.docx
- 2025年中国超音波手套机市场调查研究报告.docx
最近下载
- 农村电商(农产品电商)运营全套教学课件.pptx
- 四川省成都市第七中学2025-2026学年高一上学期11月半期考试英语(含答案).pdf
- (最新)ISO31073-2022风险管理术语(译2022-04)(推荐下载).pdf VIP
- (最新)村干部考试试题(含答案).docx VIP
- zippo图册年度机系列整合(更新至C25).docx VIP
- 多轴车铣复合加工运动转换方法:原理、实践与创新.docx
- 商务礼仪商务礼仪培训专用.ppt VIP
- 《铁路劳动安全》第04章预防机动车辆伤害.pptx VIP
- 化工制图第1章 制图基础.ppt VIP
- 化工制图AutoCAD应用基础-03章.pptx VIP
原创力文档

文档评论(0)