- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
常见的八种经典排序方法
常见经典排序算法
1.希尔排序
2.二分插入法
3.直接插入法
4.带哨兵的直接排序法
5.冒泡排序
6.选择排序
7.快速排序
8.堆排序
一.希尔(Shell)排序法(又称宿小增量排序,是1959年由D.L.Shell提出来的)
/* Shell 排序法 */
#include stdio.h
void sort(int v[],int n)
{
int gap,i,j,temp;
for(gap=n/2;gap0;gap /= 2) /* 设置排序的步长,步长gap每次减半,直到减到1 */
{
for(i=gap;in;i++) /* 定位到每一个元素 */
{
for(j=i-gap;(j = 0) (v[j] v[j+gap]);j -= gap ) /* 比较相距gap远的两个元素的大小,根据排序方向决定如何调换 */
{
temp=v[j];
v[j]=v[j+gap];
v[j+gap]=temp;
}
}
}
}
二.二分插入法
/* 二分插入法 */
void HalfInsertSort(int a[], int len)
{
int i, j,temp;
int low, high, mid;
for (i=1; ilen; i++)
{
temp = a[i];/* 保存但前元素 */
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; jhigh; j--)/* 元素后移 */
{
a[j+1] = a[j];
}
a[high+1] = temp; /* 插入 */
}
}
三.直接插入法
/*直接插入法*/
void InsertionSort(int input[],int len)
{
int i,j,temp;
for (i = 1; i len; i++)
{
temp = input[i]; /* 操作当前元素,先保存在其它变量中 */
for (j = i - 1;j-1input[j] temp ; j--) /* 从当前元素的上一个元素开始查找合适的位置 */
{
input[j + 1] = input[j]; /* 一边找一边移动元素 */
input[j] = temp;
}
}
}
四.带哨兵??直接排序法
/**
* 带哨兵的直接插入排序,数组的第一个元素不用于存储有效数据
* 将input[0]作为哨兵,可以避免判定input[j]中,数组是否越界
* 因为在j--的过程中,当j减小到0时,变成了input[0]与input[0]
* 自身进行比较,很明显这个时候说明位置i之前的数字都比input[i]小
* 位置i上的数字不需要移动,直接进入下一轮的插入比较。
*
*/
void InsertionSortWithPiquet(int input[],
文档评论(0)