Chinaunix首页 | 论坛 | 博客
  • 博客访问: 172606
  • 博文数量: 118
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 12
  • 用 户 组: 普通用户
  • 注册时间: 2013-06-21 16:38
文章分类

全部博文(118)

文章存档

2013年(118)

我的朋友

分类: C/C++

2013-10-10 16:54:47

原文地址:快排的一种优化算法 作者:joepayne

前两天在看算法时,在一本算法书上看到快排的一种优化算法,觉得不错,这里就摘下来供大家分享和自个儿今后参考
之前我先说一下为什么有了这么一种算法,这种优化的算法是针对键值重复率比较高的序列,它会减少交换的次数
比如:性别,等级等   
代码:
 int   QuikSort(int a[],int m,int n){
        if( m >= n){
            return 0;
        }        
        key = a[m];
        lt = m;
        eq = m+1;
        gt = n;
        while( eq <= gt){
            if( a[eq] > key){
                a[eq] <-> a[gt];
                gt--;
            }
            else if(a[eq] < key){
                a[eq] <-> a[lt];
                lt++;
                eq++;
            }
            else{
                eq++;
            }
        }
        QuikSor(a,m,lt - 1);
        QuikSort(a,gt+1,n);
}



 
lt 和 gt之间的就是下面中间花色区域 

 

< Key的区间


 

 

          = key的区间


 

 


        > key的区间


 

阅读(380) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~