| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4438 人关注过本帖, 8 人收藏
标题:[原创]各种排序方法总结【2008年7月7日更新】
只看楼主 加入收藏
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
Orz已经晕了……早饭+午饭都没吃……撑不住了……出去吃饭了回来再看…………

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-05-10 16:41
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
晚上来补完!!

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-05-10 16:43
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
我都是让同学帮带的..呵呵

学习需要安静。。海盗要重新来过。。
2008-05-10 16:47
菜鸟选手
Rank: 1
等 级:新手上路
帖 子:132
专家分:0
注 册:2008-5-5
收藏
得分:0 
帖子顶起再看 .!
 收回去了 ,  呵呵  ,给出原创链接!

算法学习群57909089
2008-05-10 18:28
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
qsort怎么在递归中写随机划分啊(在一个函数中,不要两个函数的)?
我只会先将数组中的元素随机乱序一下,曾经试过在递归函数中写随机划分,总是有问题

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-05-10 18:37
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
看算法导论吧,上面好像有,不过我跳过没看....

樱花大战,  有爱.
2008-05-10 18:39
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
我的qsort(随机乱序输入的数据,从而使之趋向于平衡)
void sort(int low,int high,int key[])
{
     int i,j,tag;
     i=low; j=high;
     if(i<j)
     {
       tag=key[i];
       do
       {
         while(tag<key[j] && i<j) j--;
         if(i<j)
         {
                key[i]=key[j];
                i++;
                while(tag>=key[i] && i<j) i++;
                if(i<j)
                {
                       key[j]=key[i];
                       j--;
                }
         }
       }while(i<j);
       key[i]=tag;
       sort(low,j-1,key);
       sort(i+1,high,key);
     }
}
int main(void)
{
    int i,tmp[3];
    int n;
    int key[200000];
    scanf("%d",&n);
    for(i=0;i<n;i++) scanf("%d",&key[i]);
    for(i=n/2;i<n;i++)
    {
      tmp[0]=((rand()<<4)+rand())%n;
      tmp[1]=((rand()<<4)+rand())%n;
      tmp[2]=key[tmp[0]];
      key[tmp[0]]=key[tmp[1]];
      key[tmp[1]]=tmp[2];
    }
    sort(0,n-1,key);
    for(i=0;i<n;i++)
    {
      printf("%d ",key[i]);
    }
    printf("\n");
    return 0;
}

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-05-10 18:39
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
Orz....居然睡着了,一觉醒来发现十点了………………
那个,希尔我有种简单的解决方法,可以很轻松搞定。
基数按复杂度看似乎没有桶排快。而且很难写。我准备看看再说,看来我背着写也就这水平了。明天翻了算法导论再来补完。
快排的高效版的划分没头绪。我算了下,原来的想法是错误的。反而会降低效率,所以决定舍弃原来那种,改用算法导论上面的……Orz算法导论是交换为主啊……那么效率……
不管了……推到明天吧,累死了……

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-05-10 21:52
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
孔明啊……我想要短小精悍的划分代码……555……

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-05-10 21:55
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
[bo]以下是引用 [un]StarWing83[/un] 在 2008-5-10 21:55 的发言:[/bo]

孔明啊……我想要短小精悍的划分代码……555……

貌似如果数据是随机的,那么我上面发的那个快排函数比大部分人写的(网上流传的)要快1/4,而且也比较简洁。
就是不知道怎么样把这个函数改成随机划分的

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2008-05-11 09:16
快速回复:[原创]各种排序方法总结【2008年7月7日更新】
数据加载中...
 
   



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

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