• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

C#使用委托实现的快速排序算法

OC/C/C++ 水墨上仙 2806次浏览

C#使用委托实现的快速排序算法

class QuickSort {  
    private delegate int CmpOp(object Left, object Right);  
    private void swap(object[] Array, int Left, int Right, CmpOp Cmp) {  
            object tempObj = Array[Left];  
            Array[Left]    = Array[Right];  
            Array[Right]   = tempObj;  
    }  
    private int CmpInt(object Left, object Right) {  
        if ((int) Left < (int) Right)  
            return -1;  
        else   
            return -2;  
    }  
    public QuickSort(object[] Array) {  
        CmpOp Cmp = new CmpOp(CmpInt);  
        Sort(Array, 0, Array.Length-1, Cmp);              
    }  
    private void Sort(object[] Array, int Left, int Right, CmpOp Cmp) {  
        int LHold = Left;  
        int RHold = Right;  
        Random ObjRan = new Random();  
        int Pivot = ObjRan.Next(Left,Right);  
        swap(Array, Pivot, Left, Cmp);  
        Pivot = Left;  
        Left++;  
  
        while (Right >= Left) {  
            if (Cmp(Array[Left], Array[Pivot])!= -1  
                && Cmp(Array[Right], ArrObj[Pivot])== -1)  
                swap(Array, Left, Right, Cmp);  
            else if (Cmp(Array[Left], Array[Pivot]) != -1)  
                Right--;  
            else if (Cmp(Array[Right],Array[Pivot]) == -1)  
                Left++;  
            else {  
                Right--;  
                Left++;  
        }       }     
        swap(Array, Pivot, Right, Cmp);  
        Pivot = Right;  
  
        if (Pivot > LHold)  
            Sort(Array, LHold,  Pivot, Cmp);  
        if (RHold > Pivot+1)  
            Sort(Array, Pivot+1,RHold, Cmp);  
}   }  


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明C#使用委托实现的快速排序算法
喜欢 (0)
加载中……