最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c# 快速排序算法

 更新時間:2013年10月23日 22:08:42   作者:  
快速排序使用分治法(Divide and conquer)策略來把一個串行(list)分為兩個子串行(sub-lists)

快速排序使用分治法(Divide and conquer)策略來把一個串行(list)分為兩個子串行(sub-lists)。

步驟為:

1.從數列中挑出一個元素,稱為 "基準"(pivot),

2.重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的后面(相同的數可以到任一邊)。在這個分區(qū)退出之后,該基準就處于數列的中間位置。這個稱為分區(qū)(partition)操作。

3.遞歸地(recursive)把小于基準值元素的子數列和大于基準值元素的子數列排序。

遞歸的最底部情形,是數列的大小是零或一,也就是永遠都已經被排序好了。雖然一直遞歸下去,但是這個算法總會退出,因為在每次的迭代(iteration)中,它至少會把一個元素擺到它最后的位置去。
 

平均時間復雜度 \Theta(n\log n)

 快速排序通常明顯比其他Ο(n log n) 算法更快

快速排序

復制代碼 代碼如下:

public static void Sort(int[] numbers)
{
    QuickSort(numbers, 0, numbers.Length - 1);
}
private static void QuickSort(int[] numbers, int left, int right)
{
    if (left < right)
    {
        int middle = numbers[(left + right) / 2];
        int i = left - 1;
        int j = right + 1;
        while (true)
        {
            while (numbers[++i] < middle) ;

            while (numbers[--j] > middle) ;

            if (i >= j)
                break;

            Swap(numbers, i, j);
        }

        QuickSort(numbers, left, i - 1);
        QuickSort(numbers, j + 1, right);
    }
}

private static void Swap(int[] numbers, int i, int j)
{
    int number = numbers[i];
    numbers[i] = numbers[j];
    numbers[j] = number;
}

調用:

復制代碼 代碼如下:

int[] y = new int[] {4,8,2222,2,1,121,13,434,56,1111,65,7,8 };
Sort(y);
foreach (var item in y)
{
    Console.WriteLine(item);
} // 1 2 4 7 8 8 13 56 65 121 434 1111 2222

相關文章

  • C#下使用XmlDocument操作XML詳解

    C#下使用XmlDocument操作XML詳解

    本文詳細講解了C#使用XmlDocument操作XML的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C#基礎知識之new關鍵字介紹

    C#基礎知識之new關鍵字介紹

    在 C# 中,new 關鍵字可用作運算符、修飾符或約束,本文主要介紹這三種用法。
    2016-04-04
  • C#開發(fā)WinForm根據條件改變DataGridView行顏色

    C#開發(fā)WinForm根據條件改變DataGridView行顏色

    這篇文章介紹了C#開發(fā)WinForm根據條件改變DataGridView行顏色的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • Unity Blend Tree動畫混合樹使用入門教程

    Unity Blend Tree動畫混合樹使用入門教程

    這篇文章主要為大家詳細介紹了Unity Blend Tree動畫混合樹使用入門教程,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 解析使用enumerator模式簡化異步操作的詳解

    解析使用enumerator模式簡化異步操作的詳解

    本篇文章是對使用enumerator模式簡化異步操作進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • 結合Visual C#開發(fā)環(huán)境講解C#中事件的訂閱和取消訂閱

    結合Visual C#開發(fā)環(huán)境講解C#中事件的訂閱和取消訂閱

    這篇文章主要介紹了C#中事件的訂閱和取消訂閱,結合Visual C#開發(fā)環(huán)境來進行講解,Visual C#被集成在微軟的IDE程序Visual Studio中,需要的朋友可以參考下
    2016-01-01
  • C#設置子窗體在主窗體中居中顯示解決方案

    C#設置子窗體在主窗體中居中顯示解決方案

    接下來將介紹C#如何設置子窗體在主窗體中居中顯示,本文提供詳細的操作步驟,需要的朋友可以參考下
    2012-12-12
  • C#中的TemplateMethod模式問題分析

    C#中的TemplateMethod模式問題分析

    這篇文章主要介紹了C#中的TemplateMethod模式,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • C#中TCP通信的實現示例

    C#中TCP通信的實現示例

    本文介紹了C#中TCP通信的實現示例,包括服務端和客戶端的角色,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-11-11
  • C#遠程獲取圖片文件流的方法

    C#遠程獲取圖片文件流的方法

    這篇文章主要介紹了C#遠程獲取圖片文件流的方法,涉及C#針對圖片及文件流操作的相關技巧,需要的朋友可以參考下
    2016-02-02

最新評論

宣化县| 昆山市| 永康市| 临汾市| 临汾市| 张北县| 济阳县| 新乐市| 罗平县| 会昌县| 望谟县| 三门县| 正宁县| 周口市| 华坪县| 阜宁县| 韶关市| 井陉县| 斗六市| 登封市| 贵港市| 咸阳市| 布尔津县| 临泽县| 曲阳县| 芦溪县| 永兴县| 儋州市| 海宁市| 孟津县| 吴旗县| 元阳县| 普定县| 兴安县| 永泰县| 灵璧县| 庆安县| 根河市| 宜昌市| 军事| 白水县|