1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        C#實(shí)現(xiàn)——十大排序算法之選擇排序

        共 1524字,需瀏覽 4分鐘

         ·

        2020-10-15 17:37

        選擇排序法

        1.工作原理(算法思路)

        1. 給定一個(gè)待排序數(shù)組,找到數(shù)組中最小的那個(gè)元素

        2. 如果最小元素不是待排序數(shù)組的第一個(gè)元素,則將其和第一個(gè)元素互換

        3. 在剩下的元素中,重復(fù)1、2過(guò)程,直到排序完成。

        2.動(dòng)圖演示

        3.C#代碼實(shí)現(xiàn)

        根據(jù)原理設(shè)計(jì)算法:

         class Program{        //選擇排序法    private static void chooseSort(int[] array){        //第一個(gè)for循環(huán):每一次循環(huán)完成后得到的當(dāng)前的最大元素都與第i位做交換        for (int i = 0; i < array.Length; i++)        {            //min為最小元素的索引            int min = i;
        //第二個(gè)for循環(huán):將當(dāng)前的array[j]與array[min]作比較,如果array[j]更小,則替換min的當(dāng)前索引 for (int j = i + 1; j < array.Length; j++) { if (array[min] > array[j]) { min = j; } } //當(dāng)?shù)诙€(gè)for循環(huán)完成時(shí),array[min]中存儲(chǔ)的就是當(dāng)前最小元素 //將array[min]與array[i]交換 int temp = array[i]; array[i] = array[min]; array[min] = temp; } }
        //打印輸出數(shù)組 private static void printArray(int[] array){ foreach (int item in array) { Console.Write(item + "\t"); } Console.WriteLine(); }
        static void Main(string[] args){ int[] array = new int[10] { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }; printArray(array); chooseSort(array); printArray(array); Console.ReadKey();
        }
        }


        輸出結(jié)果

        4.性能分析

        1)復(fù)雜度

        2)選擇排序法特點(diǎn)

        • 執(zhí)行的比較和交換次數(shù)
          比較:N*(N-1)/2
          交換:N

        • 運(yùn)行時(shí)間與輸入無(wú)關(guān)
          在每一次的for循環(huán)結(jié)束后并不能為下一次的循環(huán)提供有效信息。這種性質(zhì)在某些時(shí)候是一種缺陷。在數(shù)組大小相同時(shí),當(dāng)一個(gè)幾乎已經(jīng)有序的數(shù)組使用選擇排序法花費(fèi)的時(shí)間和無(wú)序數(shù)組所花費(fèi)的時(shí)間是一致的。

        • 數(shù)據(jù)的移動(dòng)量最少
          交換的次數(shù)和數(shù)組的大小呈線性關(guān)系,其他的排序算法對(duì)數(shù)據(jù)移動(dòng)量都是線性對(duì)數(shù)級(jí)別或平方級(jí)別的。


        瀏覽 63
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            美女被日 | 日韩无码高清一区二区三区 | 影音先锋av在线资源 | 我撕校花衣服揉她胸好爽 | 黄色视频电影 | yg10 aqq一个致敬汗汗漫画 | 久久九九久久九九 | 女人扒开腿让男人插 | 秋霞影视一区二区三区 | 美女被摸胸视频 |