[转]实现了几种比较常见的排序方法


  1using System;
  2using System.Collections;
  3using System.ComponentModel;
  4using System.Data;
  5using System.Drawing;
  6using System.Web;
  7using System.Web.SessionState;
  8using System.Web.UI;
  9using System.Web.UI.WebControls;
 10using System.Web.UI.HtmlControls;
 11
 12namespace suanfa
 13{
 14    /// <summary>
 15    /// Sort 的摘要说明。
 16    /// </summary>

 17    public class Sort : System.Web.UI.Page
 18    {
 19        private void Page_Load(object sender, System.EventArgs e)
 20        {
 21            int i;
 22            int [] arrSortData;
 23            int[] arrData = new int[]{1,5,3,6,10,55,9,2,87,12,34,75,33,47};
 24            //输出未排序数据
 25            Response.Write("<b>原来数据:<b><br>");
 26            for(i=0; i<arrData.Length; i++)
 27            {
 28                Response.Write(arrData[i] + "&nbsp;");
 29            }

 30            Response.Write("<hr>");
 31            //输出冒泡排序结果
 32            arrSortData = bubbleSort(arrData);
 33            Response.Write("<b>冒泡排序结果:<b><br>");
 34            for(i=0; i<arrSortData.Length; i++)
 35            {
 36                Response.Write(arrSortData[i] + "&nbsp;");
 37            }

 38            Response.Write("<hr>");
 39            //输出快速排序结果
 40            arrSortData = quickSort(arrData);
 41            Response.Write("<b>快速排序结果:<b><br>");
 42            for(i=0; i<arrSortData.Length; i++)
 43            {
 44                Response.Write(arrSortData[i] + "&nbsp;");
 45            }

 46            Response.Write("<hr>");
 47            //输出插入排序结果
 48            arrSortData = insertSort(arrData);
 49            Response.Write("<b>插入排序结果:<b><br>");
 50            for(i=0; i<arrSortData.Length; i++)
 51            {
 52                Response.Write(arrSortData[i] + "&nbsp;");
 53            }

 54            Response.Write("<hr>");
 55            //输出选择排序结果
 56            arrSortData = selectSort(arrData);
 57            Response.Write("<b>选择排序结果:<b><br>");
 58            for(i=0; i<arrSortData.Length; i++)
 59            {
 60                Response.Write(arrSortData[i] + "&nbsp;");
 61            }

 62            Response.Write("<hr>");
 63            // 在此处放置用户代码以初始化页面
 64        }

 65        
 66        //冒泡排序
 67        private int[] bubbleSort(int[] arrData)
 68        {
 69            if(arrData.Length <= 1)
 70            {
 71                return arrData;
 72            }

 73            bool bAllHaveSort = false;
 74            for(int i=arrData.Length-1; i>0 && !bAllHaveSort; i--)
 75            {
 76                for(int j=0; j<i; j++)
 77                {
 78                    bAllHaveSort = true;
 79                    if(arrData[j] > arrData[j+1])
 80                    {
 81                        int temp = arrData[j];
 82                        arrData[j] = arrData[j+1];
 83                        arrData[j+1= temp;
 84                        bAllHaveSort = false;
 85                    }
    
 86                }

 87            }

 88            return arrData;
 89        }

 90        //快速排序
 91        private int[] quickSort(int[] arrData)
 92        {
 93            if(arrData.Length <= 1)
 94            {
 95                return arrData;
 96            }

 97            for(int i=0; i<arrData.Length-1; i++)
 98            {
 99                for(int j=i+1; j<arrData.Length; j++)
100                {
101                    if(arrData[i]>arrData[j])
102                    {
103                        int temp = arrData[i];
104                        arrData[i] = arrData[j];
105                        arrData[j] = temp;
106                    }

107                }

108            }

109            return arrData;
110        }

111        //插入排序
112        private int[] insertSort(int[] arrData)
113        {
114            if(arrData.Length <= 1)
115            {
116                return arrData;
117            }

118            for(int i=1; i<arrData.Length; i++)
119            {
120                int temp = arrData[i];
121                int j = i;
122                while(j>0 && arrData[j]<arrData[j-1])
123                {
124                    arrData[j] = arrData[j-1];
125                    j--;
126                }

127                arrData[j] = temp;
128            }

129            return arrData;
130        }

131        //选择排序
132        private int[] selectSort(int[] arrData)
133        {
134            if(arrData.Length <= 1)
135            {
136                return arrData;
137            }

138            for(int i=0; i<arrData.Length-1; i++)
139            {
140                int min = i;
141                for(int j=i+1; j<arrData.Length; j++)
142                {
143                    if(arrData[min]>arrData[j])
144                    {
145                        min = j;
146                    }

147                }

148                int temp = arrData[i];
149                arrData[i] = arrData[min];
150                arrData[min] = temp;
151            }

152            return arrData;
153        }

154        
155        Web 窗体设计器生成的代码
175    }

176}

177

转自:laifangsong
posted @ 2006-04-21 23:00  李振波  阅读(272)  评论(0编辑  收藏  举报