文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>自己凭感觉写的归并排序算法

自己凭感觉写的归并排序算法

时间:2010-09-09  来源:月小

   下午闲来无事,把归并排序复习了下,并照着自己的理解写出了算法,算是练练脑子,感觉几年不用都秀逗了。

代码 #region 归并排序
        public static void MergeSort(int[] ary)
        {
            MergeSort(ary,0,ary.Length-1);
        }

        public static void MergeSort(int[] ary,int i,int j)
        {
            if(i>=j) return;
            for (int m = 1; m <= j; m = m * 2)
            {
                for (int n = i; n < j; n = n + m*2)
                {
                    if (n + m * 2 - 1 > j)
                    {
                        MSort(ary, n, j, m);
                    }
                    else
                    {
                        MSort(ary, n, n + m * 2 - 1, m);
                    }
                }
            }
        }

        private static void MSort(int[] ary, int i, int j,int m)
        {
            if (i == j) return;
            else
            {
                Merge(ary, i,j,m);
            }
        }

        private static void Merge(int[] ary,int i,int j,int m)
        {
            
            int l = i + m;
            while (l <= j)
            {
                int tmp = ary[l];//后半段的第一位
                int k = l-1;  //前半段最后一位
                while (k>=i && ary[k] > tmp)  //找到比tmp大的数就把它向后挪一位
                {
                    ary[k + 1] = ary[k];
                    k--;
                }
                ary[k + 1] = tmp;
                l++;
            }
     
        }
        #endregion

 

  

   代码应该还有一些优化的空间,先记下来,以后再看。 

 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载