• 全部
  • 问答

快速排序中划分算法的改进

tqs520 2008-04-09 05:04:47
快速排序算法中对一次划分的改进:
在指针减1和增1的同时进行起泡操作,即在相邻的两个记录处于逆序时进行互换,同时在算法中附设两个布尔型变量分别指示指针和在从两端向中间移动的过程中是否进行过交换记录的操作,若指针在从低端向中间的移动过程中没有进行交换记录的操作,测不再需要对低端子表进行排序;类似的,若指针在从高端向中间移动的过程中没有进行交换记录的操作,则不再需要对高端子表进行排序。
有谁可以帮忙根据上面的思想替我写一个改进后的划分程序吗?用C语言哟,先谢过了!
...全文
194 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wangdeqie 2008-09-16
up
回复
我也想了解,谢谢LZ.
回复
ryfdizuo 2008-04-10
有个双向冒泡的demo:
#include <stdio.h>

void Bubble2Sort(int* pData,int Count)
{
int iTemp, i;
int left = 1;
int right =Count -1;
int t;
do
{
//正向的部分
for(i=right;i>=left;i--)
{
if(pData[i]<pData[i-1])
{
iTemp = pData[i];
pData[i] = pData[i-1];
pData[i-1] = iTemp;
t = i;
}
}
left = t+1;

//反向的部分
for(i=left;i<right+1;i++)
{
if(pData[i]<pData[i-1])
{
iTemp = pData[i];
pData[i] = pData[i-1];
pData[i-1] = iTemp;
t = i;
}
}
right = t-1;
}while(left<=right);
}

void main()
{
int data[] = {10,9,8,7,6,5,4};
Bubble2Sort(data,7);
for (int i=0;i<7;i++)
printf("%d ", data[i]);
printf("\n");
}
回复
相关推荐
发帖
数据结构与算法
创建于2007-08-27

3.2w+

社区成员

数据结构与算法相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-04-09 05:04
社区公告
暂无公告