二分法排序是归并排序么?

林初茵 2008-12-15 03:21:15
我在一个历史帖子 《求二分法排序的程序》...
http://topic.csdn.net/t/20030111/02/1348211.html
看到这样的说法
说2分法排序(我这里说的是2分法排序不是2分法查找) 就是归并排序 我不敢确认 请大家说说是不是?
如果2分法排序不是归并排序? 那它到底是哪种排序?

还有就是问一下 下面的代码是快速排序吧?

#include<stdio.h>
#define len 8
int a[len]={2,8,4,7,1,5,6,3};
int main()
{
int i,j;
int low,high,mid;
int temp;
for(i=1;i<len;i++)
{
temp=a[i];
low=0;
high=i-1;
while(low<=high)
{
mid=(low+high)/2;
if(a[mid]>temp)
high=mid-1;
else
low=mid+1;
}
for(j=i-1;j>high;j--)
a[j+1]=a[j];
a[high+1]=temp;
}

for(i=0;i<len;i++)
printf("%d\n",a[i]);
}



...全文
715 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
萤火架构 2010-09-10
  • 打赏
  • 举报
回复
也分享一个:鸡尾酒排序
http://blog.bossma.cn/csharp/csharp_sort_coc/
bfhtian 2008-12-15
  • 打赏
  • 举报
回复
应该是的
sagegz 2008-12-15
  • 打赏
  • 举报
回复
http://zh.wikipedia.org/wiki/%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95
LZ看看吧!还有所有排序算法的相关链接...
wuhao198411 2008-12-15
  • 打赏
  • 举报
回复
楼主说的“二分排序”应该是归并排序的另一种叫法吧。
jieao111 2008-12-15
  • 打赏
  • 举报
回复
折半插入排序,好像叫希尔排序吧,,
elephont9527 2008-12-15
  • 打赏
  • 举报
回复
还有,多路归并一般只是外排序才会用到,内排的话没多大意义
林初茵 2008-12-15
  • 打赏
  • 举报
回复
折半插入排序 楼上的受教
能详细讲讲么?
elephont9527 2008-12-15
  • 打赏
  • 举报
回复
目前貌似没有公认的称之为二分法排序的算法, 从二分字面上理解的话,快排和归并都可以算作二分排序吧,只不过快排按照标值二分,小的在前大的在后,而归并则是按照下标二分,再分别对两个部分归并排序,先分后和,在和的过程中排序。
二叉树排序应该是构造二叉树,小的在左,大的在右,将待排序的数依次插入,然后前序遍历即可,这种方法只是利用二叉树的特殊构造,把每个数插入到恰当的位置,跟二分的概念也能稍微沾点边。
至于你举的例子,楼上说了,插入排序而已,搞了个花哨的二分查找,意思不大。
piaomiaoju 2008-12-15
  • 打赏
  • 举报
回复
归并排序,应该 不只2-路归并一种
你下面的排序不是快排,应该是 插入排序的二分查找变种,也叫折半插入排序
wuyu637 2008-12-15
  • 打赏
  • 举报
回复
偶没有听过二叉树排序,感觉上应该没啥关系。
林初茵 2008-12-15
  • 打赏
  • 举报
回复
楼上
你那是在维基百科中找的吧 里面还有一种叫二叉树排序 和二分排序有关系么?
wuyu637 2008-12-15
  • 打赏
  • 举报
回复
算法描述
归并操作的工作原理如下:
申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列
设定两个指针,最初位置分别为两个已经排序序列的起始位置
比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置
重复步骤3直到某一指针达到序列尾
将另一序列剩下的所有元素直接复制到合并序列尾

=================================================
"排序算法"分类中的页面

本分类在本页面中有14个条目,总计14个。
B
Bogo排序

冒泡排序

基数排序

堆積排序

希尔排序

并行排序

归并排序

快速排序

排序算法

插入排序

桶排序

选择排序

鸡尾酒排序

鸽巢排序

========================================
没有二分排序,实际上,是同一个排序方法的2个名字。
林初茵 2008-12-15
  • 打赏
  • 举报
回复
自己顶 弄懂为止!
wuyu637 2008-12-15
  • 打赏
  • 举报
回复
up,jiefen

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧