积少成多

垃圾堆

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  29 Posts :: 1 Stories :: 5 Comments :: 0 Trackbacks
一般分如下步骤:
1)选择一个枢纽元素(有很对选法,我的实现里采用去中间元素的简单方法)
2)使用该枢纽元素分割数组,使得比该元素小的元素在它的左边,比它大的在右边。并把枢纽元素放在合适的位置。
3)根据枢纽元素最后确定的位置,把数组分成三部分,左边的,右边的,枢纽元素自己,对左边的,右边的分别递归调用快速排序算法即可。public static void quicksort(int stru[], int left, int right){

    if(left<right){
        
int i=left,j=right;
        
int X=stru[i];
        
int n=i;
        
while(i<j){
            
while(X<stru[j]&&j>i){
                j
--;
            }
            stru[n]
=stru[j];
            n
=j;
            
while(X>stru[i]&&i<j){
                i
++;
            }
            stru[n]
=stru[i];
            n
=i;
        }
        stru[i]
=X;
        quicksort(stru,left,j
-1);
        quicksort(stru,j
+1,right);
    }
}
posted on 2011-05-26 17:34 思无 阅读(121) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: