文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>基本的排序(C#代码)

基本的排序(C#代码)

时间:2010-08-28  来源:huaxiaoyao

 基本的排序方法,C#代码

        #region 选择排序
        //经典排序方法
        //说明排序的思路
        /// <summary>
        /// 双重循环,外循环遍历一遍数据,内循环控制对比次数
        /// 每次内循环就可以找出当前位置上最小的一个值
        /// </summary>
        /// <param name="a"></param>
        protected static void SelectSort(int[] a)
        {
            for (int i = 0; i < a.Length; i++)
            {
                int k = i;
                for (int j = i + 1; j < a.Length; j++)
                {
                    if (a[j] < a[k]) k = j;
                }
                if (i != k)
                {
                    int temp = a[i];
                    a[i] = a[k];
                    a[k] = temp;
                }
            }

            foreach (int x in a)
                Console.WriteLine(x);
        }
        #endregion
 
        #region 冒泡排序
        /// <summary>
        /// 何为冒泡 即每次循环都找到一个最大值,沉底冒泡
        /// </summary>
        /// <param name="a"></param>
        protected static void BubbleSort(int[] a)
        {
            for (int i = 0; i < a.Length; i++)
            {
                for (int j = i + 1; j < a.Length; j++)
                {
                    if (a[j]< a[i])
                    {
                        int temp = a[j];
                        a[j] = a[i];
                        a[i] = temp;
                    }
                }
            }
             foreach (int x in a)
                 Console.WriteLine(x);
        }
        #endregion

        #region  插入排序
         /// <summary>
        /// 思想:假设只有一个元素的数组肯定是有序的
        /// 然后再从后边的无序区将元素插到已经有序的
        /// 数组中的合适的位置,一直保持着这个数组有序
        /// </summary>
        /// <param name="a"></param>
         protected static void InsertSort(int[] a)
         {
             for (int i = 1; i < a.Length; i++)
             {
                 for (int j = 0; j <= i; j++)
                 {
                     if (a[i]< a[j])
                     {
                         int k = a[i];
                         a[i] = a[j];
                         a[j] = k;
                     }
                 }
             }

             foreach (int x in a)
                 Console.WriteLine(x);
         }
        #endregion      

        #region 希尔排序
         ///我理解的希尔排序
        /// <summary>
        /// 先取一个正整数d1<n,把所有序号相隔d1的数组元素放一组,
        /// 组内进行直接插入排序;然后取d2<d1,
        /// 重复上述分组和排序操作;直至di=1,即所有记录放进一个组中排序为止 
        /// </summary>
        /// <param name="a"></param>
         protected static void ShellSort(int[] a)
         {
             int inc = a.Length;
             for (inc=inc/2; inc > 0; inc = inc / 2)//控制步长因子
             { 
                //里面的就是插入排序的算法代码
                 for (int i = inc; i < a.Length; i++)
                 {
                     for (int j = 0; j <= i; j=j+inc)
                     {
                         if (a[i] < a[j])
                         {
                             int k = a[i];
                             a[i] = a[j];
                             a[j] = k;
                         }
                     }
                 }

             }
 
             foreach (int x in a)
                 Console.WriteLine(x);
         }
        #endregion
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载