麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C# > 正文

C#快速排序

2023-05-16 12:36:08
字體:
來源:轉載
供稿:網友

快速排序思想:

基于分治策略,對冒泡排序的一種改進。對于要排序的一個序列,從中選一值進行排序,將其放入到正確的位置position。然后以position為界,對左右兩部分再做排序。直到劃分的長度為1。

步驟:設有一待排序的序列

1、分別設置low、high指向序列的最左端、最右端;從序列中選一個進行排序(通常選最左端的值low指向的值),存入到tmp;
2、從high端開始,查找比tmp小的,找到后將該值放入到low指向的存儲位中;苯玥igh指向當前查到的值所在的位;
3、從low端開始,查找比tmp大的,找到后將該值放入到high指向的存儲為中,同時low指向當前查到的值所在位;
4、若low位小于high位,返回步驟2;否則,將tmp值存入到空出來的low+1指向的位置,退出,返回low所在的位置position;
5、以position為界,將序列分成兩部分,分別對兩部分進行排序。

c#實現如下:

         //快速排序
        public static void QuickSort(int[] items)
        {
            RecQuickSort(items, 0, items.Length - 1);
        }

        private static void RecQuickSort(int[] items, int low, int high)
        {
            if (low < high)
            {
                int i = Partition(items, low, high);
                RecQuickSort(items, low, i - 1);
                RecQuickSort(items, i + 1, high);
            }
        }

        private static int Partition(int[] items, int low, int high)
        {
            int tmp = items[low];
            while (low < high)
            {
                while (low < high && items[high] >= tmp)
                    high--;

                // 換位后不能將low加1,防止跳位  
                if (low < high)
                    items[low] = items[high];

                while (low < high && items[low] <= tmp)
                    low++;

                if (low < high)
                {
                    items[high] = items[low];
                    // 有low < high,可將high向前推一位  
                    high--;
                }
            }
            items[low] = tmp;

            return low;
        }

最關鍵的是Partition,做一次排序的劃分,將其放入到正確的位置。


.NET中的Array.Sort()方法內部使用的就是快速排序算法,看看Array.Sort()方法的實現:
   
    [ReliabilityContract(Consistency.MayCorruptInstance, Cer.MayFail)]
    public static void Sort(Array array)
    {
        if (array == null)
        {
            throw new ArgumentNullException("array");
        }
        Sort(array, null, array.GetLowerBound(0), array.Length, null);
    }   

    [ReliabilityContract(Consistency.MayCorruptInstance, Cer.MayFail)]
    public static void Sort(Array keys, Array items, int index, int length, IComparer comparer)
    {
        if (keys == null)
        {
            throw new ArgumentNullException("keys");
        }
        if ((keys.Rank != 1) || ((items != null) && (items.Rank != 1)))
        {
            throw new RankException(Environment.GetResourceString("Rank_MultiDimNotSupported"));
        }
        if ((items != null) && (keys.GetLowerBound(0) != items.GetLowerBound(0)))
        {
            throw new ArgumentException(Environment.GetResourceString("Arg_LowerBoundsMustMatch"));
        }
        if ((index < keys.GetLowerBound(0)) || (length < 0))
        {
            throw new ArgumentOutOfRangeException((length < 0) ? "length" : "index", Environment.GetResourceString("ArgumentOutOfRange_NeedNonNegNum"));
        }
        if (((keys.Length - (index - keys.GetLowerBound(0))) < length) || ((items != null) && ((index - items.GetLowerBound(0)) > (items.Length - length))))
        {
            throw new ArgumentException(Environment.GetResourceString("Argument_InvalidOffLen"));
        }
        if ((length > 1) && (((comparer != Comparer.Default) && (comparer != null)) || !TrySZSort(keys, items, index, (index + length) - 1)))
        {
            object[] objArray = keys as object[];
            object[] objArray2 = null;
            if (objArray != null)
            {
                objArray2 = items as object[];
            }
            if ((objArray != null) && ((items == null) || (objArray2 != null)))
            {
                new SorterObjectArray(objArray, objArray2, comparer).QuickSort(index, (index + length) - 1);
            }
            else
            {
                new SorterGenericArray(keys, items, comparer).QuickSort(index, (index + length) - 1);
            }
        }
    }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产精品av久久久久久久久久 | av观看网站| 久久久99精品视频 | 国产精品成人免费一区久久羞羞 | 日韩字幕在线观看 | 精品视频在线免费看 | 国产在线精品区 | 少妇色诱麻豆色哟哟 | 中文字幕欧美视频 | 国产精品成人免费一区久久羞羞 | 精品国产91久久久久久 | 九九热免费观看 | 国产精品久久国产精麻豆96堂 | 末成年女av片一区二区 | 久久亚洲视频网 | a视频在线播放 | 欧美一级毛片一级毛片 | 欧美a级大胆视频 | 91精品视频网址 | 久久亚洲精品久久国产一区二区 | 黄色电影免费网址 | 国产成人在线观看免费 | 亚洲综合精品成人 | 中国杭州少妇xxxx做受 | 国产精品视频二区不卡 | 欧美福利视频一区二区三区 | 久久污| 麻豆视频国产在线观看 | 国产成人精品区 | 国产免费乱淫av | 欧美在线观看黄色 | 国产亚洲精品久久久久婷婷瑜伽 | 亚洲视频在线观看免费 | 国产午夜精品久久久久久久蜜臀 | 国产午夜探花 | 一级黄色免费观看视频 | 天天鲁在线视频免费观看 | 欧美wwwsss9999| 免费观看国产精品视频 | 国产毛片网站 | 最新中文字幕在线 |