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

C#實(shí)現(xiàn)插入排序

 更新時(shí)間:2022年08月13日 16:35:14   作者:Darren Ji  
這篇文章介紹了C#實(shí)現(xiàn)插入排序的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

在選擇排序中,從第一個(gè)元素開始,依次遍歷數(shù)組中的元素,找出當(dāng)前遍歷元素之后的最小元素,與當(dāng)前遍歷元素交換位置,依此類推,是一種由前往后的排序。而在插入排序中,從第二個(gè)元素開始,依次遍歷數(shù)組中的元素,把當(dāng)前遍歷元素與之前的元素進(jìn)行比較,并插入到之前的某個(gè)位置,是一種由后往前的排序。

自定義一個(gè)類,里面維護(hù)著一個(gè)int[]類型數(shù)組,通過構(gòu)造函數(shù)定義數(shù)組長度并初始化,并提供了打印和插入排序的相關(guān)方法。

    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 < arr.Length; i++)
            {
                arr[i] = r.Next(10, 100);
            }
        }
        //插入排序
        public void Sort()
        {
            int insert;
            for (int i = 1; i < arr.Length; i++) //從第二個(gè)元素開始遍歷
            {
                insert = arr[i];//把當(dāng)前遍歷元素視為插入元素,放到臨時(shí)變量insert中
                int moveItem = i;//movieItem可以理解為一個(gè)動(dòng)態(tài)索引,初始位置在當(dāng)前遍歷元素的索引
                while (moveItem > 0 && arr[moveItem -1] > insert) //如果前面一個(gè)元素比插入元素大
                {
                    arr[moveItem] = arr[moveItem - 1];//那就把前面這個(gè)元素賦值給后面位置,相當(dāng)于往后移一位
                    moveItem--;//再把動(dòng)態(tài)索引位置向前移動(dòng)一位
                }
                arr[moveItem] = insert;
                Print();
            }
        }
        //打印數(shù)組元素
        public void Print()
        {
            foreach (var item in arr)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine();
        }
    }

以上,大致過程是:從數(shù)組中第二個(gè)元素開始,先把當(dāng)前遍歷元素賦值給一個(gè)臨時(shí)變量,比如說是insert,insert這個(gè)變量肯定要插入到當(dāng)前遍歷元素之前的某個(gè)位置,如何確定插入位置呢?假設(shè)用moveItem變量表示最終要插入的索引位置,先把當(dāng)前遍歷元素的索引賦值給moveItem,如果moveItem-1位置上的元素大于insert,那就把moveItem-1位置上的元素向后移動(dòng)一位,并把moveItem-1位置的索引賦值給moveItem,insert是要插入到當(dāng)前的這個(gè)moveItem位置嗎?不一定。再繼續(xù)拿當(dāng)前moveItem位置的前面一個(gè)位置上的元素與insert比較,只要是比insert大,就把該位置上的元素向后移動(dòng)一位,并重新設(shè)置moveItem的值,直到停止循環(huán)。此時(shí)moveItem的值就是insert需要插入的位置。

客戶端調(diào)用。

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

對(duì)于插入排序,當(dāng)依次遍歷數(shù)組元素時(shí),進(jìn)行了n-1次迭代,當(dāng)把第二個(gè)元素插入到之前某個(gè)位置時(shí)進(jìn)行了1次迭代,當(dāng)把第三個(gè)元素插入到之前某個(gè)位置時(shí)進(jìn)行了2次迭代......第n個(gè)元素進(jìn)行了n-1次迭代,以時(shí)間復(fù)雜度來說,忽略小項(xiàng)和常數(shù)項(xiàng),插入排序基本上是一個(gè)平方階,寫成O(n²)。 

到此這篇關(guān)于C#實(shí)現(xiàn)插入排序的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#客戶端程序Visual Studio遠(yuǎn)程調(diào)試的方法詳解

    C#客戶端程序Visual Studio遠(yuǎn)程調(diào)試的方法詳解

    這篇文章主要給大家介紹了關(guān)于C#客戶端程序Visual Studio遠(yuǎn)程調(diào)試的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • C#保存圖片到數(shù)據(jù)庫并讀取顯示圖片的方法

    C#保存圖片到數(shù)據(jù)庫并讀取顯示圖片的方法

    將圖像保存到SQL server2000的Image字段中
    2013-04-04
  • C#中Dapper的使用教程

    C#中Dapper的使用教程

    Dapper是一款輕量級(jí)ORM工具(Github),Dapper語法十分簡單。并且無須遷就數(shù)據(jù)庫的設(shè)計(jì),今天通過本文給大家介紹C# Dapper的使用,感興趣的朋友一起看看吧
    2021-07-07
  • C#分析URL參數(shù)并獲取參數(shù)和值對(duì)應(yīng)列表的方法

    C#分析URL參數(shù)并獲取參數(shù)和值對(duì)應(yīng)列表的方法

    這篇文章主要介紹了C#分析URL參數(shù)獲取參數(shù)和值對(duì)應(yīng)列表的方法,涉及C#進(jìn)行URL分析及正則表達(dá)式的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • C#控制臺(tái)帶參數(shù)程序源碼編寫實(shí)例講解

    C#控制臺(tái)帶參數(shù)程序源碼編寫實(shí)例講解

    像ipconfig /all 這樣的CMD命令想必大家都知道,但是很多童鞋可能不知道怎么寫這樣的控制臺(tái)帶參數(shù)的程序,需要的朋友可以了解下
    2012-12-12
  • C# 9.0 特性全面總結(jié)

    C# 9.0 特性全面總結(jié)

    這篇文章主要介紹了C# 9.0 特性的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-02-02
  • C#中的圖像Image類與打印Printing類用法

    C#中的圖像Image類與打印Printing類用法

    這篇文章介紹了C#中圖像Image類與打印Printing類的用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • C#10的13個(gè)特性

    C#10的13個(gè)特性

    本文詳細(xì)講解了C#10的13個(gè)特性,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • WPF自定義選擇年月控件詳解

    WPF自定義選擇年月控件詳解

    這篇文章主要為大家詳細(xì)介紹了WPF自定義選擇年月控件的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • C#使用XML序列化操作菜單的方法

    C#使用XML序列化操作菜單的方法

    這篇文章主要介紹了C#使用XML序列化操作菜單的方法,是基于上一篇遞歸讀取XML菜單數(shù)據(jù)的改進(jìn)方法,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-12-12

最新評(píng)論

通化县| 姜堰市| 望都县| 浪卡子县| 平乐县| 滨州市| 游戏| 南昌县| 永丰县| 牡丹江市| 庆元县| 成武县| 滨州市| 克东县| 科技| 铜川市| 盐源县| 仙桃市| 乌拉特中旗| 景洪市| 休宁县| 元朗区| 菏泽市| 呼图壁县| 英德市| 文成县| 青神县| 巴彦县| 湄潭县| 绥芬河市| 昭觉县| 绥中县| 兴文县| 邯郸县| 平阳县| 广安市| 台南市| 乌兰察布市| 长宁县| 高台县| 辉县市|