首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > .NET > C#.NET > 一些排序的集合
【标  题】:一些排序的集合
【关键字】:
【来  源】:http://blog.csdn.net/DNAngler/archive/2007/04/13/1563615.aspx

一些排序的集合

//收集的一些排序源代码...供大家参考...

using System;

namespace PaiXu
{
    //冒泡排序
    public class BubbleSorter
    {
        public void Sort(int[] list)
        {
            int i, j, temp;
            bool done = false;
            j = 1;
            while ((j < list.Length) && (!done))
            {
                done = true;
                for (i = 0; i < list.Length - j; i++)
                {
                    if (list[i] > list[i + 1])
                    {
                        done = false;
                        temp = list[i];
                        list[i] = list[i + 1];
                        list[i + 1] = temp;
                    }
                }
                j++;
            }
        }
    }

    //选择排序
    public class SelectionSorter
    {
        private int min;
        public void Sort(int[] list)
        {
            for (int i = 0; i < list.Length - 1; i++)
            {
                min = i;
                for (int j = i + 1; j < list.Length; j++)
                {
                    if (list[j] < list[min])
                        min = j;
                }
                int t = list[min];
                list[min] = list[i];
                list[i] = t;
            }
        }
    }

    //插入排序
    public class InsertionSorter
    {
        public void Sort(int[] list)
        {
            for (int i = 1; i < list.Length; i++)
            {
                int t = list[i];
                int j = i;
                while ((j > 0) && (list[j - 1] > t))
                {
                    list[j] = list[j - 1];
                    --j;
                }
                list[j] = t;
            }
        }
    }

    //希尔排序
    public class ShellSorter
    {
        public void Sort(int[] list)
        {
            int inc;
            for (inc = 1; inc <= list.Length / 9; inc = 3 * inc + 1) ;
            for (; inc > 0; inc /= 3)
            {
                for (int i = inc + 1; i <= list.Length; i += inc)
                {
                    int t = list[i - 1];
                    int j = i;
                    while ((j > inc) && (list[j - inc - 1] > t))
                    {
                        list[j - 1] = list[j - inc - 1];
                        j -= inc;
                    }
                    list[j - 1] = t;
                }
            }
        }
    }

}

//调用方法.....以下以按钮事件形式给出...加到按钮的事件里即可,

        private void button1_Click(object sender, EventArgs e)//
        {
            int[] iArrary = new int[] { 1, 5, 13, 6, 10, 55, 99, 2, 87, 12, 34, 75, 33, 47 };
            BubbleSorter sh = new BubbleSorter();
            sh.Sort(iArrary);
            for (int m = 0; m < iArrary.Length; m++)
            {
                txt = txt + iArrary[m].ToString() + " ";
            }
            textBox1.Text = txt;
        }

        private void button2_Click(object sender, EventArgs e)//
        {
            int[] iArrary = new int[] { 1, 5, 13, 6, 10, 55, 99, 2, 87, 12, 34, 75, 33, 47 };
            SelectionSorter ss = new SelectionSorter();
            ss.Sort(iArrary);
            for (int m = 0; m < iArrary.Length; m++)
                txt = txt + iArrary[m].ToString() + " ";
            textBox1.Text = txt;
        }

        private void button3_Click(object sender, EventArgs e)//
        {
            int[] iArrary = new int[] { 1, 5, 13, 6, 10, 55, 99, 2, 87, 12, 34, 75, 33, 47 };
            InsertionSorter ii = new InsertionSorter();
            ii.Sort(iArrary);
            for (int m = 0; m < iArrary.Length; m++)
                txt = txt + iArrary[m].ToString() + " ";
            textBox1.Text = txt;
        }

        private void button4_Click(object sender, EventArgs e)//
        {
            int[] iArrary = new int[] { 1, 5, 13, 6, 10, 55, 99, 2, 87, 12, 34, 75, 33, 47 };
            ShellSorter sh = new ShellSorter();
            sh.Sort(iArrary);
            for (int m = 0; m < iArrary.Length; m++)
                txt = txt + iArrary[m].ToString() + " ";
            textBox1.Text = txt;
        }

//以上在vs2005下调试通过...

简单的c#文本文件读写:【上一篇】
如何解决用XmlSerializer序列化和反序列化一个类, 保存到UTF-8的XML中. 产生的换行符丢失的问题:【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • 充分利用链接异常处理
  • 3DS Max 7 Mental Ray渲染器全攻略(1)
  • 快速在Word中一次移动多个对象
  • 由少林寺比武想到软件行业分工
  • RS/6000液晶显示屏上显示代码(LED)的含义
  • 画中画新闻
  • Sybase常见问题集锦(三)
  • ASP.NET 调用ie打印(隐藏页眉、页脚以及打印按钮等)
  • SIM卡编号的含意
  • 天堂2 收集如何赚钱(小团)
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.