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
相关文章读者评论发表评论 |