专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »博文摘选 » C#设计模式 排序算法和委托结合运用 »正文

C#设计模式 排序算法和委托结合运用

来源: 发布时间:星期六, 2009年12月26日 浏览:0次 评论:0
周 6还要上班闲来无事写了排序算法利用委拖来实现比较可扩展性比较强
排序类如下:
="code_img_closed" src="http://CrazyCoder.cn/WebFiles/200912/5503c660-482e-471a-a22c-852895741479.g" alt="" />="code_img_opened" _disibledevent=>="cnblogs_code_collapse">代码 using ;using .Collections.Generic;using .Text;
 SortMethod
{
    
//主要用来比较两个对象思路方法    public delegate bool Comparison(object a,object b);
    
public  Sort
    {
        
/// <summary>
        
/// 冒泡排序算法
        
/// </summary>
        
/// <param name="s"></param>
        
/// <param name="cp"></param>        public  void BubbleSort(object list, Comparison cp)
        {
            
for ( i = 0; i < list.Length; i)
            {
                
for ( j = i + 1; j < list.Length; j)
                {
                    
 (cp(list[i], list[j]))
                    {
                        
object rs = list[i];
                        list[i] 
= list[j];
                        list[j] 
= rs;
                    }
                }
            }
        }
        
/// <summary>
        
/// 选择排序算法
        
/// </summary>
        
/// <param name="s"></param>
        
/// <param name="cp"></param>        public  void SelectSort(object list, Comparison cp)
        {
            
 min;
            
for ( i = 0; i < list.Length; i)
            {
                min 
= i;
                
for ( j = i + 1; j < list.Length; j)
                {
                    
 (cp(list[min], list[j]))
                    {
                        min 
= j;
                    }
                }
                
object rs = list[i];
                list[i] 
= list[min];
                list[min] 
= rs;
            }
        }

        
/// <summary>
        
/// 插入排序算法
        
/// </summary>
        
/// <param name="s"></param>
        
/// <param name="cp"></param>        public  void InsertSort(object list, Comparison cp)
        {
            
for ( i = 1; i < list.Length; i)
            {
                
object t = list[i];
                
 j = i;
                
while ((j > 0&& cp(t, list[j - 1]))
                {
                    list[j] 
= list[j - 1];
                    
--j;
                }
                list[j] 
= t;
            }
        }
        
/// <summary>
        
/// 希尔排序算法
        
/// </summary>
        
/// <param name="s"></param>
        
/// <param name="cp"></param>        public  void ShellSort(object list, Comparison cp)
        {
            
 inc;
            
for (inc = 1; inc <= list.Length / 9; inc = 3 * inc + 1) ;
            
for (; inc > 0; inc /= 3)
            {
                
for ( i = inc + 1; i <= list.Length; i  inc)
                {
                    
object t = list[i - 1];
                    
 j = i;
                    
while ((j > inc) && cp(t,list[j - inc - 1]))
                    {
                        list[j 
- 1= list[j - inc - 1];
                        j 
-= inc;
                    }
                    list[j 
- 1= t;
                }
            }
        }

    }
}


类进行排序
="code_img_closed" src="http://CrazyCoder.cn/WebFiles/200912/5503c660-482e-471a-a22c-852895741479.g" alt="" />="code_img_opened" _disibledevent=>="cnblogs_code_collapse">代码 protected void Button1_Click(object sender, EventArgs e)
        {
            
//通过委托思路方法            SortMethod.Comparison com =  SortMethod.Comparison(Comp);           
            
 str = TextBox1.Text.Trim.Split(',');
            
//进行排序            SortMethod.Sort.BubbleSort(str,com);
            
//输出            Label1.Text = "";
            
for ( i = 0; i < str.Length; i)
            {
                Label1.Text 
 str[i]. + ",";
            }
        }
        
//比较思路方法这里可以自己定义        public bool Comp(object a, object b)
        {
            
 Convert.ToInt32(a) < Convert.ToInt32(b);
        }



 


 

Tag标签: 委拖,排序算法
标签:
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: