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

c# 快速排序算法

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

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

步驟為:

1.從數(shù)列中挑出一個(gè)元素,稱為 "基準(zhǔn)"(pivot),

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

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

遞歸的最底部情形,是數(shù)列的大小是零或一,也就是永遠(yuǎn)都已經(jīng)被排序好了。雖然一直遞歸下去,但是這個(gè)算法總會(huì)退出,因?yàn)樵诿看蔚牡╥teration)中,它至少會(huì)把一個(gè)元素?cái)[到它最后的位置去。
 

平均時(shí)間復(fù)雜度 \Theta(n\log n)

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

快速排序

復(fù)制代碼 代碼如下:

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;
}

調(diào)用:

復(fù)制代碼 代碼如下:

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

相關(guān)文章

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

    C#下使用XmlDocument操作XML詳解

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

    C#基礎(chǔ)知識(shí)之new關(guān)鍵字介紹

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

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

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

    Unity Blend Tree動(dòng)畫混合樹使用入門教程

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

    解析使用enumerator模式簡(jiǎn)化異步操作的詳解

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

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

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

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

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

    C#中的TemplateMethod模式問題分析

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

    C#中TCP通信的實(shí)現(xiàn)示例

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

    C#遠(yuǎn)程獲取圖片文件流的方法

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

最新評(píng)論

民勤县| 丰台区| 舒城县| 庄河市| 张北县| 柘城县| 建水县| 鄂托克前旗| 溆浦县| 怀来县| 桦甸市| 屏南县| 弥勒县| 和田市| 长阳| 云龙县| 开原市| 句容市| 德化县| 沙田区| 大兴区| 大理市| 田林县| 崇仁县| 武宁县| 靖江市| 台北县| 广西| 四会市| 揭东县| 乾安县| 环江| 高台县| 云霄县| 宝清县| 宁蒗| 蒙阴县| 天水市| 柳州市| 通道| 多伦县|