| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1593 人关注过本帖
标题:求助一个排序函数!
只看楼主 加入收藏
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
多谢woodhead,基本上就是这个意思。要是能把less_t省掉用less就更好了,另外less_str应该能变成inline吧,手头没有书,始终没查到语法。

[此贴子已经被作者于2006-8-24 0:20:22编辑过]



http://myajax95./
2006-08-23 21:54
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
woodhead的程序在VC6上编译不过。

C:\vc6\test11\test11.cpp(33) : error C2667: 'partition' : none of 2 overload have a best conversion
        C:\vc6\test11\test11.cpp(70) : see reference to function template instantiation 'void __cdecl quicksort(char ** ,char ** ,struct less_str)' being compiled
C:\vc6\test11\test11.cpp(33) : error C2668: 'partition' : ambiguous call to overloaded function
        C:\vc6\test11\test11.cpp(70) : see reference to function template instantiation 'void __cdecl quicksort(char ** ,char ** ,struct less_str)' being compiled

http://myajax95./
2006-08-24 07:16
roland21
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-8-13
收藏
得分:0 
我这个比较简便(从大到小排序,要反过来稍微改改就行),不过不能解决楼主第3个问题,各位提提意见

void pai(float arr[],float arr2[])//arr2为arr的复制体
{
int i,j=0;//i动j静
int n;//新数组下标
int total=4;//元素个数

for(n=0;n<total;++n)
{
for(i=0;i<total;++i)
{
if(arr[i]>arr[j]) j=i;
}
arr2[n]=arr[j];
arr[j]=-999;//比原来任一元素都小
}

若想把排序结果弄进原数组里,用for一一赋值即可

[此贴子已经被作者于2006-8-24 11:15:05编辑过]

2006-08-24 10:05
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 
用现成的less
加入
#include <functional>


template<class T>
void quicksort(T* tStart, T* tEnd) // overloading
{
quicksort(tStart, tEnd, less<T>());
}
把自己写的less_t去掉,就行了。


less_str方法是inline的,是在类中定义的,而且代码很少。

vc6编译通不过,还没解决,麻烦了,gcc可以通过

2006-08-24 10:30
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 

vc6不通过的原因已经知道了,<functional>里面有个partition,所以得改个函数名。


http://myajax95./
2006-08-24 10:33
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 
using namespace std; 是个不好的习惯,看来。

2006-08-24 10:50
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
以下是引用woodhead在2006-8-24 10:50:14的发言:
using namespace std; 是个不好的习惯,看来。

高手都这么说。


http://myajax95./
2006-08-24 10:53
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
不过我宁可让自己写的函数名不太std。

http://myajax95./
2006-08-24 10:55
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 
问一下,SHSQL.DLL 是什么?我的vc6找不到,可以编译,但不能运行。
而且开机时有一个错误,SH.exe引用地址不能为write,是不是我这个系统不能装vc6?2003

2006-08-24 10:59
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 
[QUOTE]高手都这么说。[/QUOTE]
如果使用很多的标准库的东西,std::感觉象得了强迫症。

2006-08-24 11:03
快速回复:求助一个排序函数!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017385 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved