中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#如何實現選擇排序

發布時間:2022-08-13 17:01:48 來源:億速云 閱讀:292 作者:iii 欄目:開發技術

本篇內容主要講解“C#如何實現選擇排序”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“C#如何實現選擇排序”吧!

選擇排序是一種低效的排序算法,大致過程是:遍歷數組的每一個元素,先假設0號位置上的元素是最小的,并把0號索引賦值給一個表示最小元素索引的變量,比如說是smallest,再遍歷0號位置以后的元素,一旦發現有比0號位置元素更小的元素,就把該元素的索引賦值給smallest,繼續遍歷,最終把0號位置以后最小元素的索引賦值給了smallest變量,再把0號位置和smallest位置上的元素互換,這樣,在0號位置上放上了最小元素。接著,在1號位置放上倒數第二小的元素,在2號位置放上倒數第三小的元素......以此類推,最終得到一個升序排列的數組。由于是依次循環遍歷數組元素,個人更愿意把選擇排序理解成線性排序。

自定義一個類,里面維護著一個int[]類型數組,通過構造函數定義數組長度并初始化,并提供了打印和選擇排序的相關方法。

   public class MyArray
    {
        private static int[] arr;
        private static Random r = new Random();
        public MyArray(int size)
        {
            arr = new int[size];
            for (int i = 0; i < size; i++)
            {
                arr[i] = r.Next(1, 100);
            }
        }
        //選擇排序算法
        public void Sort()
        {
            int smallest; //最小元素的索引 
            //最后一個索引位置不需要遍歷,因為在代碼段的內部循環中包含了對最后一個索引位置的處理
            for (int i = 0; i < arr.Length - 1; i++)
            {
                //把當前遍歷的元素的索引賦值給smallest,即假設當前遍歷的數組元素為最小元素
                smallest = i;
                //遍歷當前遍歷元素后面的所有元素
                //獲取最小元素的索引
                for (int index = i + 1; index < arr.Length; index++)
                {
                    if (arr[index] < arr[smallest])
                    {
                        smallest = index;
                    }
                }
                //把當前遍歷元素和最小元素交換位置
                Swap(i, smallest);
                //每次排完序打印
                Print();
            }
        }
        //交換2個位置上的元素
        public void Swap(int first, int second)
        {
            int temp = arr[first];
            arr[first] = arr[second];
            arr[second] = temp;
        }
        //打印數組元素
        public void Print()
        {
            foreach (var item in arr)
            {
                Console.Write(item + " ");               
            }
            Console.WriteLine("\n");
        }
    }

客戶端調用。

    class Program
    {
        static void Main(string[] args)
        {
            MyArray myArray = new MyArray(8);
            Console.Write("排序前: ");
            myArray.Print();
            Console.WriteLine("排序后: ");
            myArray.Sort();
            Console.ReadKey();
        }
    }

C#如何實現選擇排序

可見,對選擇排序來說,外部循環進行了n-1次迭代,內部循環第一次進行了n-1迭代,第二次進行了n-2次迭代&hellip;&hellip;以時間復雜度來說,忽略小項和常數項,選擇排序基本上是一個平方階,寫成O(n&sup2;)。

到此,相信大家對“C#如何實現選擇排序”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

丰台区| 南江县| 彰化市| 江华| 松潘县| 巴塘县| 于都县| 黄山市| 乌拉特后旗| 衢州市| 阿勒泰市| 浮山县| 西贡区| 兴城市| 普兰县| 南乐县| 府谷县| 射阳县| 万盛区| 汾西县| 丰镇市| 中江县| 工布江达县| 民勤县| 嫩江县| 康保县| 彭泽县| 增城市| 合肥市| 宁安市| 阿克苏市| 香格里拉县| 福贡县| 梓潼县| 土默特右旗| 新巴尔虎右旗| 乐平市| 长阳| 沂源县| 酒泉市| 密山市|