work hard work smart

专注于Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C# 排序算法总结

Posted on 2012-02-03 10:50  work hard work smart  阅读(453)  评论(0编辑  收藏  举报

1、冒泡排序

1.冒泡排序   将被排序的记录数组R[1..n]垂直排列,每个记录R[i]看作是重量为R[i].key的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"(冒泡因此得名)。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。 下面是种的往下冒泡的例子

 class Program
    {
        /// <summary>
        /// 冒泡排序 
        /// </summary>
        /// <param name="numArr"></param>
        public void Sort(int[] numArr)
        {
            int tmpNum;
            for (int i = 0; i < numArr.Length -1 ;i++ )//最多做numArr.Length-1趟排序
            {
                for (int j = 0; j < numArr.Length- i - 1;j++ )
                {
                    if (numArr[j]>numArr[j+1])
                    {
                        tmpNum = numArr[j];
                        numArr[j] = numArr[j + 1];
                        numArr[j + 1] = tmpNum;
                    }
                }
            }
        }
        static void Main(string[] args)
        {
            int[] Arr = new int[] {3,6,1,9,8,7 };
            Program p = new Program();
            p.Sort(Arr);
            for (int k = 0; k < Arr.Length;k++ )
            {
                Console.Write("{0} ", Arr[k]);
            }
        }
    }

  

2、选择排序(Selection Sort)

选择排序的基本思想是:每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的子文件的最后,直到全部记录排序完毕。

        /// <summary>
        /// 选择排序(Selection Sort)的基本思想是:每一趟从待排序的记录中选出关键字最小的记录,
        /// 顺序放在已排好序的子文件的最后,直到全部记录排序完毕。
        /// </summary>
        /// <param name="numArr"></param>
        public void SelectionSort(int[] numArr)
        {
            int min, tmpNum;
            for (int i = 0; i < numArr.Length - 1;i++ )
            {
                min = i;
                for (int j = i + 1; j < numArr.Length;j++ )
                {
                    if (numArr[j] < numArr[min])
                    {
                        min = j;
                    } 
                }
                tmpNum = numArr[i];
                numArr[i] = numArr[min];
                numArr[min] = tmpNum;
            }
        }
        static void Main(string[] args)
        {
            int[] Arr = new int[] {3,6,1,9,8,7 };
            Program p = new Program();
            p.SelectionSort(Arr);
            for (int k = 0; k < Arr.Length; k++)
            {
                Console.Write("{0} ", Arr[k]);
            }
        }