现丑了! 公布部分代码! 希望有人用得上! (2)

huanyun 2004-07-26 06:11:58
//插入法排序
template <class Type>
void XISort(Type* pArray, int nArray, BOOL bDesc=TRUE)
{
int i,j;
Type t;
if (bDesc)
{
for (i=1; i<nArray; ++i)
{
t = pArray[i];
for (j=i; j>0 && pArray[j-1]<t;--j)
pArray[j] = pArray[j-1];
pArray[j] = t;
}
}
else
{
for (i=1; i<nArray; ++i)
{
t = pArray[i];
for (j=i; j>0 && pArray[j-1]>t;--j)
pArray[j] = pArray[j-1];
pArray[j] = t;
}
}
}

//快速排序
template <class Type>
void XQSort(Type* pArray, int nArray, BOOL bDesc=TRUE, int nCutOff=50)
{
if (nArray <= nCutOff)
{
if (nCutOff > 1) XISort<Type>(pArray, nArray, bDesc);
}
else
{
int i=0,j=nArray;
Type t;
t = *pArray; *pArray = *(pArray+(j>>1)); *(pArray+(j>>1)) = t;
if (bDesc)
{
while (1)
{
while ((++i) < nArray && pArray[i]>pArray[0]);
while ((--j) > 0 && pArray[j]<pArray[0]);
if (i>=j) break;
t = pArray[i]; pArray[i] = pArray[j]; pArray[j] = t;
}
}
else
{
while (1)
{
while ((++i) < nArray && pArray[i]<pArray[0]);
while ((--j) > 0 && pArray[j]>pArray[0]);
if (i>=j) break;
t = pArray[i]; pArray[i] = pArray[j]; pArray[j] = t;
}
}
t = pArray[0]; pArray[0] = pArray[j]; pArray[j] = t;
XQSort<Type>(pArray, j, bDesc, nCutOff);
XQSort<Type>(pArray+j+1, nArray-j-1, bDesc, nCutOff);
}
}


//二分查找, 返回该数字第一次出现的位置
template <class Type>
int XSearch(Type Val, Type* pArray, int nArray, BOOL bDesc=TRUE)
{
if (nArray < 1) return -1;
int l,u,m;
l = -1,u = nArray;
if (bDesc)
{
while (l+1!=u)
{
m = (l+u)>>1;
if (pArray[m] > Val)
l = m;
else
u = m;
}
}
else
{
while (l+1!=u)
{
m = (l+u)>>1;
if (pArray[m] < Val)
l = m;
else
u = m;
}
}
if (u>=nArray || pArray[u] != Val)
return -1;
else
return u;
}
...全文
426 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
无敌魔仙 2004-08-03
  • 打赏
  • 举报
回复
up
braversmmu 2004-08-03
  • 打赏
  • 举报
回复
支持
micty 2004-08-02
  • 打赏
  • 举报
回复
thank you ,thank you ,you proud of china ,the more ,the better
huaboy408 2004-08-02
  • 打赏
  • 举报
回复
不错,up
Musik 2004-08-02
  • 打赏
  • 举报
回复
嘿嘿,我顶~~~~~
Tomcat4 2004-07-31
  • 打赏
  • 举报
回复
学习!
lhbcsdn 2004-07-31
  • 打赏
  • 举报
回复
UP
countryboy 2004-07-31
  • 打赏
  • 举报
回复
呵呵~!~!~
mark~~~~~!!
xenix 2004-07-27
  • 打赏
  • 举报
回复
函数的参数应该如果类似 stl 的iterator 风格更好
nineclock 2004-07-27
  • 打赏
  • 举报
回复
up
steven_sina 2004-07-27
  • 打赏
  • 举报
回复
不错,谢谢
wqs6 2004-07-27
  • 打赏
  • 举报
回复
呵呵 ,进来取经!
huanyun 2004-07-27
  • 打赏
  • 举报
回复
stl有
C版本的有 但速度太慢
C++版本快 但准备数据麻烦
所以......
stevenW 2004-07-27
  • 打赏
  • 举报
回复
stl有没有?
zxj911 2004-07-27
  • 打赏
  • 举报
回复
学习ing
yleric 2004-07-27
  • 打赏
  • 举报
回复
留着,以后用的上
酒红绿叶 2004-07-26
  • 打赏
  • 举报
回复
好东西啊,,
syy64 2004-07-26
  • 打赏
  • 举报
回复
学习。

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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