- 1、本文档共25页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MoreWindows 白话经典算法之七大排序(第
2 版)
这是本人在研一上课时所整理的文档,包括冒泡排序,直接
插入排序,直接选择排序,希尔排序,归并排序,快速排序和堆
排序这七种常用的排序方法,这些文章不仅使我在考试中取了不
错的成绩,也为后来顺利面过迅雷,腾讯,微软打下了良好的基
础,现在整理成电子书形式,希望能对大家有所帮助。第2 版新
加入了总结篇,有助于大家的复习。
白话经典算法之七大排序目录
1.白话经典算法系列之一 冒泡排序的三种实现
2. 白话经典算法系列之二 直接插入排序的三种实现
3. 白话经典算法系列之三 希尔排序的实现
4. 白话经典算法系列之四 直接选择排序
5. 白话经典算法系列之五 归并排序的实现
6. 白话经典算法系列之六 快速排序 快速搞定
7. 白话经典算法系列之七 堆与堆排序
8. 白话经典算法系列之总结篇
By MoreWindows (/MoreWindows)
该文档版权归MoreWindows 所有(morewindows@126.com ) ,欢迎大家访问我的博客。
一.白话经典算法系列之一 冒泡排序的三种实现
冒泡排序是非常容易理解和实现,以从小到大排序举例:
设数组长度为N 。
1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交
换。
2 .这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就
“沉”到数组第N-1个位置。
3 .N=N-1,如果N不为0就重复前面二步,否则排序完成。
按照定义很容易写出代码:
// 冒泡排序1
void BubbleSort1(int a[], int n)
{
int i, j ;
for (i = 0; i n; i++)
for (j = 1; j n - i; j ++)
if (a[j - 1] a[j ])
Swap(a[j - 1], a[j ]);
}
下面对其进行优化,设置一个标志,如果这一趟发生了交换,则为true ,否则为
false 。明显如果有一趟没有发生交换,说明排序已经完成。
// 冒泡排序2
void BubbleSort2(int a[], int n)
{
int j , k;
bool flag;
k = n;
flag = true;
while (flag)
{
flag = false;
for (j = 1; j k; j ++)
if (a[j - 1] a[j ])
{
Swap(a[j - 1], a[j ]);
flag = true;
}
k--;
}
}
再做进一步的优化。如果有100个数的数组,仅前面10个无序,后面90个都已排
好序且都大于前面10个数字,那么在第一趟遍历后,最后发生交换的位置必定小
于10,且这个位置之后的数据必定已经有序了,记录下这位置,第二次只要从数
组头部遍历到这个位置就可以了。
// 冒泡排序3
// By MoreWindows (/MoreWindows)
void BubbleSort3(int a[], int n)
{
int j , k;
int flag;
flag = n;
while (flag 0)
{
k = flag;
flag = 0;
for (j = 1; j k; j ++)
if (a[j - 1] a[j ])
{
Swap(a[j - 1], a[j ]);
flag = j ;
}
}
}
冒泡排序毕竟是一种效率低下的排序方法,在数据规模很小时,可以采用。数据
规模比较大时,最好用其它排序方法。
二.白话经典算法系列之二 直接插入排序的三种实现
直接插入排序(Insertion Sort) 的
您可能关注的文档
- HY-S智能转速监控仪.pdf
- ICU常用消毒液的配制及有效期.ppt
- IAM统一账号管理与访问控制系统产品白皮书.pdf
- ICP-TOFMS AN02 - ICP-oa-TOFMS对瞬态样品进样的同位素比率分析精度.pdf
- ICTI10-27日答疑会问题点解析.pdf
- ICU病人的营养支持(1).ppt
- IBM产品部2014年工作计划.pptx
- IEC60598灯具标准译文-第一部分.pdf
- image-pro计算TEM图中微粒粒径的操作过程.pdf
- IEC61850 SCD配置工具使用说明书.pdf
- XGC28000履带起重机技术规格书.docx
- Unit 2 Lesson 4 名师课件 七年级英语上册冀教版(2024).pptx
- 时态专项练习题.docx
- 山西省长治市潞州区长治学院附属太行中学校2024-2025学年高二上学期11月期中地理试题(解析版).docx
- 高工咨询:2024年协作机器人产业发展蓝皮书.pdf
- 上海市松江一中2024-2025学年高二上学期期中生物试题(解析版).docx
- 新疆维吾尔自治区吐鲁番市2024-2025学年八年级上学期期中地理试题(解析版).docx
- 安徽省六安市汇文中学2024-2025学年九年级上学期11月期中物理试题(解析版).docx
- 国家和医疗机构层面的医疗保健相关感染监测实用手册-WHO.pdf
- 北京市清华大学附属中学朝阳学校2024-2025学年高二上学期期中考试数学试题(解析版).docx
文档评论(0)