排序的最快算法?
我想对一个链表进行排序,有谁知道最快选法?链表的头指针放长度吗? 问题点数:40、回复次数:9Top
1 楼comanche(太可怕)回复于 2000-12-18 09:01:00 得分 10
可以用改进的链表,用一个数组记录每个结点的入口
TList就是个这样的东东
这样的东东可以用 QuickSortTop
2 楼BCB(天下三分明月夜,二分无赖是扬州)回复于 2000-12-18 11:09:00 得分 0
其实最快最简单的排序还是“哈希”排序,
它的时间复杂性O(N),许多“论文”声称
“发明”了一个新排序,其实,就是“哈希”
的一个特例而已,对处理串比较实用;
Top
3 楼sundaynews(小虫)回复于 2000-12-18 14:30:00 得分 10
我鼓励还是用快速排序,HASH排序前提太苛刻
如果内存允许,就用commanche所说的方法
例如把链表放到这样的一个数组
struct {
对象指针
对象的排序字段
} 对象数组[]
然后用qsort
Top
4 楼BCB(天下三分明月夜,二分无赖是扬州)回复于 2000-12-18 15:49:00 得分 0
ok.
C++带有一个一个现成的排序,就是qsort(...),
不过要根据你的情况自行写个比较函数!
Top
5 楼BCB(天下三分明月夜,二分无赖是扬州)回复于 2000-12-18 15:55:00 得分 20
#include <stdlib.h>
void qsort(void *base, size_t nelem, size_t width, int (_USERENTRY *fcmp)(const void *, const void *));#include <stdio.h>
//---------------------------------------------------------
#include <stdlib.h>
#include <string.h>
int sort_function( const void *a, const void *b);
char list[5][4] = { "cat", "car", "cab", "cap", "can" };
int main(void)
{
int x;
qsort((void *)list, 5, sizeof(list[0]), sort_function);
for (x = 0; x < 5; x++)
printf("%s\n", list[x]);
return 0;
}
int sort_function( const void *a, const void *b)
{
return( strcmp((char *)a,(char *)b) );
}
Top
6 楼Juddy()回复于 2000-12-19 08:56:00 得分 0
qsort(...)用的是什么排序方法?我还是想自己用快速排序写。
Top
7 楼yyz()回复于 2000-12-19 09:12:00 得分 0
delphi,cb++不是有源程序吗,打开看看就可以了。
很简单的,就几行而已。Top
8 楼BCB(天下三分明月夜,二分无赖是扬州)回复于 2000-12-19 09:45:00 得分 0
C++BUILDER qsort() 用的就是快速排序法,
DELPHI 中难道没带这种排序过程? 这两种语言可
出自同一家.
Top
9 楼myxxyy(学习者)回复于 2000-12-19 10:57:00 得分 0
仅从排序的算法和数据而言,并不存在所谓的一种通用的“最快”方法。
很多算法都是针对某些数据模型而言是最快的,但对另外的数据可能效率就比较低;不过通常情况下C的qsort()函数的速度是很快的,也没有必要事必恭亲去自己编写算法(其实是很麻烦的)兄弟!Top




