`
cheeruplc
  • 浏览: 114998 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

再读排序

阅读更多

再次写冒泡法排序 我写了一个多小时 以前也觉得会了 可是应该是没有从心里理解 所以再次写冒泡法排序和第一次写差不多了 所以理解是很重要的 不需要刻意去记住 并且不会轻易忘记
这里只谈及最常见的冒泡法和选择法排序:
其实这两种排序的大体思想是一样的,都是对一列数取最值 然后再将剩下(除去最值以外)的数据进行排序,也就是说归根究底也就是两种方式采用了不同的取最值的方法而已;
冒泡法:取最值的方法是将相邻的两个数据做比较如果比之大或小则交换位置 这样就保证每次进行比较都会将一个最值传到最后 也就得出了最值 最后最值下标所指向的值和与之最初比较的数值交换
选择法:用第一个给定值通过遍历和排在其后的所有数据进行比较 如果比之大或小 则记录其最终最值下标
从这两种比较方式上来看 冒泡法实在符合比较大小条件之后就都进行数值交换 而选择法排序则是在比较大小之后记录其最值下标 只进行一次交换 效率稍高
贴上两种排序方法
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