游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3012|回复: 11

求教快速方法排序代码!(百度了很多代码都是有缺陷的)

[复制链接]

2

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2010-10-26 17:16:00 | 显示全部楼层 |阅读模式
麻烦高手 贴一下手上的快速排序的代码!谢谢。

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2010-10-27 12:46:00 | 显示全部楼层

Re:求教快速方法排序代码!(百度了很多代码都是有缺陷

  1. int a[100]={具体内容};
  2. int i=1;
  3. while(i<100)
  4. {
  5.   if(a[i-1]>a[i])
  6.   {
  7.     swap a[i-1],a[i];
  8.     i--;
  9.     if(i<1)i=2;
  10.   }
  11.   else i++;
  12. }
复制代码

刚刚设计的,也不知道行不行。

2

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2010-10-27 18:54:00 | 显示全部楼层

Re:求教快速方法排序代码!(百度了很多代码都是有缺陷

不行哎,好像要用递归来做的吧!

57

主题

139

帖子

141

积分

注册会员

Rank: 2

积分
141
发表于 2010-10-27 23:00:00 | 显示全部楼层

Re:求教快速方法排序代码!(百度了很多代码都是有缺陷

#include <stdlib.h>
//...
qsort(/*...*/);
//...

11

主题

80

帖子

146

积分

注册会员

Rank: 2

积分
146
发表于 2010-10-28 09:05:00 | 显示全部楼层

Re: 求教快速方法排序代码!(百度了很多代码都是有缺陷

世界没有完美的。 2个最快的排序算法选一个吧  归并排序,快速排序.stl都有啊

11

主题

80

帖子

146

积分

注册会员

Rank: 2

积分
146
发表于 2010-10-28 09:10:00 | 显示全部楼层

Re:求教快速方法排序代码!(百度了很多代码都是有缺陷

//以下为伪码实现
template<typename T>
void QSort(T a[],int nStart,int nEnd)
{
     int i = random(nStart,nEnd);
     QSort(a,nStart,i);
     QSort(a,i+1,nEnd);
}

11

主题

80

帖子

146

积分

注册会员

Rank: 2

积分
146
发表于 2010-10-28 09:15:00 | 显示全部楼层

Re:求教快速方法排序代码!(百度了很多代码都是有缺陷

哦,对了在random()后面少了一个步骤,参照a,调整a数组的元素分布。 呵呵,好久没写过了。 最好还是用stl的快速排序算法

1

主题

14

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2010-11-2 00:09:00 | 显示全部楼层

Re:求教快速方法排序代码!(百度了很多代码都是有缺陷

算法导论
quick算法 最快

19

主题

52

帖子

52

积分

注册会员

Rank: 2

积分
52
发表于 2010-11-3 09:42:00 | 显示全部楼层

Re:求教快速方法排序代码!(百度了很多代码都是有缺陷

递归的排序是很慢的,毕竟函数开销太大,
经测试,堆排序和基数排序都比
其他排序要快许多

59

主题

984

帖子

1200

积分

金牌会员

Rank: 6Rank: 6

积分
1200
发表于 2010-11-19 11:57:00 | 显示全部楼层

Re:求教快速方法排序代码!(百度了很多代码都是有缺陷

对于50k数量级左右的排序,内存条件允许的话,radix sort是最快的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-5-30 12:04

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表