天高地厚

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

两种排序方法(冒泡排序、选择排序)

Posted on 2013-10-23 09:16  天高地厚-GNU  阅读(233)  评论(0编辑  收藏  举报

选择排序,每一次外循环,在无序数中选择出一个最小,并放在无序数中的第一位

public static void SelectSort(int[] list)        //选择排序(升序)
        {
            int min;//记录最小值索引
            int N = list.Length;                      //获得数组list的长度N
            for (int i = 0; i < N - 1; i++)           //外循环进行N-1轮比较
            {
                min = i;//假设当前索引就是最小值索引
                for (int j = i; j < N ; j++)          //内循环中在无序数中找最小值(j=i这里循环从i开始,因为i之前都是有序数,不用再比较了)
                {
                    if (list[min] > list[j])
                    {
                        min = j;
                    }
                }
                //最小值与无序数中的第一个元素交换
                int t = list[min];
                list[min] = list[i];
                list[i] = t;
            }
        }

 

冒泡排序,每一次外循环,其中的最大数就下沉到当前两两比较数的最后一位

 

public static void BubbleSort(int[] list)     //冒泡排序(升序)
        {
            int N = list.Length;                      //获得数组list的长度N
            for (int i = 1; i <= N - 1; i++)          //外循环进行N-1轮比较
            {
                for (int j = 0; j <= N - 1 - i; j++)   //内循环进两两比较,大数下沉(‘- i’外循环循环完一次选出一个最大值放在后面,后面的就不用再比较了,)
                {
                    if (list[j] > list[j+1])          //前一个数比后一个数大就替换当前两个数,最后最大数就到最后一个了
                    {
                        int t = list[j];
                        list[j] = list[j+1];
                        list[j+1] = t;
                    }
                }
            }
        }

 

下面就让我们来实现一下吧!

private void Form1_Load(object sender, EventArgs e)        

{             //数组排序             int[] iList = new int[5];             Random rd = new Random();             for (int i = 0; i < iList.Length; i++)             {                 int iRD = rd.Next(1, 51);                 if (iList.Contains(iRD))                 {                     i--;                     continue;                 }                 iList[i] = iRD;             }             BubbleSort(iList);

            string strWrite = "";             foreach (int i in iList)             {                 strWrite += i + " ";             }             textBox1.Text = strWrite;         }