论坛首页 综合技术论坛

再读排序

浏览 1382 次
锁定老帖子 主题:再读排序
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-04-26  
这里只谈最常见的冒泡法和选择法排序
其实这两种排序的大体思想是一样的,都是对一列数取最值 然后再将剩下(除去最值以外)的数据进行排序,也就是说归根究底也就是两种方式采用了不同的取最值的方法而已;

冒泡法:取最值的方法是将相邻的两个数据做比较如果比之大或小则交换位置 这样就保证每次进行比较都会将一个最值传到最后 也就得出了最值 最后最值下标所指向的值和与之最初比较的数值交换

选择法:用第一个给定值通过遍历和排在其后的所有数据进行比较 如果比之大或小 则记录其最终最值下标
从这两种比较方式上来看 冒泡法实在符合比较大小条件之后就都进行数值交换 而选择法排序则是在比较大小之后记录其最值下标 只进行一次交换 效率稍高
贴上两种排序方法
1,冒泡法
       private int[] Sort(int[] arrInt)
        {
            for (int i = 0;i < arrInt.Length-1 ; i++)
            {
                for (int j = 0; j < arrInt.Length-i-1; j++)
                {
                    if (arrInt[j+1] > arrInt[j])
                    {
                        int temp = 0;
                        temp= arrInt[j + 1];
                        arrInt[j + 1] = arrInt[j];
                        arrInt[j] = temp;
                    }
                }                    
            }
            return arrInt;
        }


2.选择法
        private int[] SortBySelect(int[] ArrInt)
        {
            int min = 0;
            for (int i = 0; i < ArrInt.Length-1;i++ )
            {
                min = i;
                for (int j = i+1; j < ArrInt.Length; j++)
                {
                    if (ArrInt[j] < ArrInt[min])
                    {
                        min = j;
                    }
                }
                int temp = 0;
                temp = ArrInt[min];
                ArrInt[min] = ArrInt[i];
                ArrInt[i] = temp;
            }
            return ArrInt;
        }


温故而知新!
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics