C# bubble sort,selection sort,insertion sort

来源:https://www.cnblogs.com/Fred1987/archive/2020/02/12/12299546.html

static void Main(string[] args) { InsertionSortDemo(); Console.ReadLine(); } static void InsertionSortDemo() { Random rnd = new Random(); int[] arr = ...


static void Main(string[] args)
        {
            InsertionSortDemo();
            Console.ReadLine();
        }

        static void InsertionSortDemo()
        {
            Random rnd = new Random();
            int[] arr = new int[100];
            for (int i = 0; i < 100; i++)
            {
                arr[i] = rnd.Next(0, 1000);
            }

            Console.WriteLine("Raw data:");
            foreach (var a in arr)
            {
                Console.Write(a + "\t");
            }

            InsertionSort(arr);
            Console.WriteLine("\n\n\nAfter insertion sort:");
            foreach(var a in arr)
            {
                Console.Write(a + "\t");
            }
        }

        static void InsertionSort(int[] arr)
        {
            int inner, temp;
            for (int outer = 0; outer < arr.Length; outer++)
            {
                temp = arr[outer];
                inner = outer;
                while (inner > 0 && arr[inner - 1] >= temp)
                {
                    arr[inner] = arr[inner - 1];
                    inner--;
                }
                arr[inner] = temp;
            }
        }

        static void SelectSortDemo()
        {
            Random rnd = new Random();
            int[] arr = new int[100];
            for (int i = 0; i < 100; i++)
            {
                arr[i] = rnd.Next(0, 10000);
            }

            Console.WriteLine("Raw data:");
            foreach (var a in arr)
            {
                Console.Write(a + "\t");
            }

            SelectionSort(arr);
            Console.WriteLine("\n\n\nAfter selection sort:");
            foreach(var a in arr)
            {
                Console.Write(a + "\t");
            }
        }

        public void SelectSort(int[] arr)
        {
            int min;
            for(int outer=0;outer<=arr.Length;outer++)
            {
                min = outer;
                for(int inner=outer+1;inner<=arr.Length;inner++)
                {
                    if(arr[inner]<arr[min])
                    {
                        min = inner;
                    }
                }
                if(min!=outer)
                {
                    int temp = arr[min];
                    arr[min] = arr[outer];
                    arr[outer] = temp;
                }
            }
        }

        static void SelectionSortDemo()
        {
            Random rnd = new Random();
            int[] arr = new int[100];
            for (int i = 0; i < 100; i++)
            {
                arr[i] = rnd.Next(0, 1000);
            }

            Console.WriteLine("Raw data:");
            foreach (var a in arr)
            {
                Console.Write(a + "\t");
            }

            int[] selectionArr = SelectionSort(arr);
            Console.WriteLine("\n\nSelection sort:");
            foreach(var a in selectionArr)
            {
                Console.Write(a + "\t");
            }
        }

        static int[] SelectionSort(int[] arr)
        {             
            int min = 0;
            for(int i=0;i<arr.Length-1;i++)
            {
                min = i;
                for(int j=i+1;j<arr.Length;j++)
                {
                    if(arr[j]<arr[min])
                    {
                        min = j;
                    }
                }

                if (i != min)
                {
                    int temp = arr[i];
                    arr[i] = arr[min];
                    arr[min] = temp;
                }
            }
            return arr;
        }

        static void BubbleDemo()
        {
            Random rnd = new Random();
            int[] arr = new int[100];
            for(int i=0;i<100;i++)
            {
                arr[i] = rnd.Next(0, 1000);
            }

            Console.WriteLine("Raw data:");
            foreach(var a in arr)
            {
                Console.Write(a + "\t");
            }

            int[] ascArr = BubbleSort(arr, true);
            Console.WriteLine("\n\n\nAsc order:");
            foreach(var a in ascArr)
            {
                Console.Write(a + "\t");
            }

            int[] descArr = BubbleSort(arr, false);
            Console.WriteLine("\n\n\nDesc order:");
            foreach(var a in descArr)
            {
                Console.Write(a + "\t");
            }
        }

        static int[] BubbleSort(int[] arr,bool isAsc)
        {
            if(arr==null && arr.Length==0)
            {
                return null;
            }
             
            for(int i=0;i<arr.Length;i++)
            {
                for(int j=i+1;j<arr.Length;j++)
                {
                    //Ascending
                    if(isAsc)
                    {
                        if(arr[i]>arr[j])
                        {
                            int temp = arr[i];
                            arr[i] = arr[j];
                            arr[j] = temp;
                        }
                    }
                    //Descending
                    else
                    {
                        if(arr[i]<arr[j])
                        {
                            int temp = arr[i];
                            arr[i] = arr[j];
                            arr[j] = temp;
                        }
                    }
                }
            }
            return arr;
        }

 


您的分享是我們最大的動力!

更多相關文章
  • 舊版的mongo擴展已經不推薦使用了,在php7以上一般是安裝和使用新版的mongodb擴展 ubuntu下 apt-get install php-mongodb 例如下麵的代碼進行了查詢和插入集合操作 <?php class DocModel{ public $mongoManger=null; ...
  • 去除內嵌tomcat和添加jsp依賴 去除內嵌tomcat 在springboot啟動依賴中去除內嵌tomcat org.springframework.boot spring-boot-starter-web ... ...
  • 每日一句英語學習,每天進步一點點: “Action may not always bring happiness; but there is no happiness without action.” 「行動不見得一定帶來快樂,但沒有行動就沒有快樂。」 前言 我在閱讀 《Effective C++ ...
  • 在前面幾篇文章的例子中也可以看到mybatis中輸入映射和輸出映射的身影,但是沒有系統的總結一下,這篇博客主要對這兩個東東做一個總結。我們知道mybatis中輸入映射和輸出映射可以是基本數據類型、hashmap或者pojo的包裝類型,這裡主要來總結一下pojo包裝類型的使用,因為這個在開發中比較常用 ...
  • 4.1 數組的相關概念和名詞(瞭解) 1、數組(array): 一組具有相同數據類型的數據的按照一定順序排列的集合。 把有限的幾個相同類型的變數使用一個名稱來進行統一管理。 2、數組名: (1)這個數組名,代表的是一組數 (2)這個數組名中存儲的整個數組的“首地址” 3、下標(index): 我們使 ...
  • 由於Api的介面需要返回多語言,因此參考了網上很多篇文章,,有些文章寫的太過於理論,看起來比較費勁,今天下午搞了一個下午,總結了一下經驗,, 做這個功能時,主要參考了兩篇文章: https://blog.johnwu.cc/article/ironman-day21-asp-net-core-loc ...
  • 在 寫xaml的使用遇到了一些特殊字元,這裡記錄一下特殊字元轉義。 這些特殊字元遵循用於編碼的萬維網聯合會(W3C) XML 標準。 下表顯示這組特殊字元的編碼語法: 字元語法描述 < &lt; 小於符號。 > &gt; 大於符號。 & &amp; & 符號。 " &quot; 雙引號。 參見: h ...
  • 樣式提供了重用一組屬性設置的實用方法。它們為幫助構建一致的、組織良好的界面邁出了重要的第一步——但是它們也是有許多限制。 問題是在典型的應用程式中,屬性設置僅是用戶界面基礎結構的一小部分。甚至最基本的程式通常也需要大量的用戶界面代碼,這些代碼與應用程式的功能無關。在許多程式中,用於用戶界面任務的代碼 ...
一周排行
  • 前幾天發佈了 "抄抄《CSS 故障藝術》的動畫" 這篇文章,在這篇文章里介紹瞭如何使用Win2D繪製文字然後配合BlendEffect製作故障藝術的動畫。本來打算就這樣收手不玩這個動畫了,但後來又發現性能不符合理想。明明只是做做Resize動畫和用BlendEffect混合,為什麼性能會這麼差呢? ...
  • 控制條控制項: progressBar 不能按照你程式的進程自動變化,需認為計算,調整變化量 private void progressBar1_Click(object sender, EventArgs e) { this.progressBar1.Maximum = 100;//設置進度條最大長 ...
  • 首先創建一個asp.net core web應用程式 第二步 目前官方預置了7種模板項目供我們選擇。從中我們可以看出,既有我們熟悉的MVC、WebAPI,又新添加了Razor Page,以及結合比較流行的Angular、React前端框架的模板項目。 空項目模板 Program.cs using S ...
  • 對閉包的理解 1.對於成員變數和局部變數:成員變數就是方法外部,類的內部定義的變數;局部變數就是方法或語句塊內部定義的變數。局部變數必須初始化。 形式參數是局部變數,局部變數的數據存在於棧記憶體中。棧記憶體中的局部變數隨著方法的消失而消失。成員變數存儲在堆中的對象裡面,由垃圾回收器負責回收。 成員變數它 ...
  • Xamarin.Forms讀取並展示Android和iOS通訊錄 TerminalMACS客戶端 本文同步更新地址: https://dotnet9.com/11520.html https://terminalmacs.com/861.html 閱讀導航: 一、功能說明 二、代碼實現 三、源碼獲取 ...
  • 做下對文件複製操作相關的筆記: /// <summary> /// 文件幫助類 /// </summary> public class FileHelper { /// <summary> /// 複製一個目錄下所有文件到一個新目錄下 /// </summary> /// <param name=" ...
  • 前言 有一個東西叫做鴨子類型,所謂鴨子類型就是,只要一個東西表現得像鴨子那麼就能推出這玩意就是鴨子。 C 裡面其實也暗藏了很多類似鴨子類型的東西,但是很多開發者並不知道,因此也就沒法好好利用這些東西,那麼今天我細數一下這些藏在編譯器中的細節。 不是只有 和 才能 在 C 中編寫非同步代碼的時候,我們經 ...
  • [toc] 1.應用背景 底端設備有大量網路報文(位元組數組):心跳報文,數據採集報文,告警報文上報。需要有對應的報文結構去解析這些位元組流數據。 2.結構體解析 由此,我第一點就想到了用結構體去解析。原因有以下兩點: 2.1.結構體存在棧中 類屬於引用類型,存在堆中;結構體屬於值類型,存在棧中,在一個 ...
  • 《深入淺出 C#》 (第3版) [作者] (美) Andrew Stellman (美) Jennifer Greene[譯者] (中) 徐陽 丁小峰 等譯[出版] 中國電力出版社[版次] 2016年08月 第1版[印次] 2018年04月 第4次 印刷[定價] 148.00元 【引子】 要學習編程 ...
  • 記錄使用對象初始值設定項初始化對象。 using System; using System.Collections.Generic; namespace ConsoleApp2 { class Program { static void Main(string[] args) { // 使用構造函數 ...
x