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

C#實現(xiàn)奇偶排序的示例代碼

 更新時間:2023年11月27日 14:31:21   作者:神仙別鬧  
奇偶排序是一種簡單的排序算法,該算法通過比較并交換相鄰的元素來完成排序,本文主要介紹了C#實現(xiàn)奇偶排序的示例代碼,具有一定的參考價值,感興趣的可以了解一下

這篇就從簡單一點的一個“奇偶排序”說起吧,不過這個排序還是蠻有意思的,嚴格來說復(fù)雜度是 O(N2),不過在多核的情況下,可以做到 N2 /(m/2)的效率,這里的 m 就是待排序的個數(shù),當 m=100,復(fù)雜度為 N2 /50,還行把,比冒泡要好點,因為重點是解決問題的奇思妙想。
下面我們看看這個算法是怎么描述的,既然是奇偶,肯定跟位數(shù)有關(guān)了

  • 先將待排序數(shù)組的所有奇數(shù)位與自己身后相鄰的偶數(shù)位相比較,如果前者大于后者,則進行交換,直到這一趟結(jié)束。
  • 然后將偶數(shù)位與自己身后相鄰的奇數(shù)位相比較,如果前者大于后者,則進行交換,直到這一趟結(jié)束。
  • 重復(fù) 1,2 的步驟,直到發(fā)現(xiàn)無“奇偶”,“偶奇” 交換的時候,就認為排序完畢,此時退出循環(huán)。

① 待排序數(shù)組:                       9 2 1 6 0 7
② 所有奇數(shù)位與身后的相鄰的偶數(shù)位比較交換    2 9 1 6 0 7
③ 所有偶數(shù)位與身后的相鄰的奇數(shù)位比較交換    2 1 9 0 6 7
④ 所有奇數(shù)位與身后的相鄰的偶數(shù)位比較交換    1 2 0 9 6 7
⑤ 所有偶數(shù)位與身后的相鄰的奇數(shù)位比較交換    1 0 2 6 9 7
⑥ 所有奇數(shù)位與身后的相鄰的偶數(shù)位比較交換    0 1 2 6 7 9

我們可以看到,經(jīng)過 5 趟排序后,我們的數(shù)組就排序完畢了,從圖中 ② 可以看到,如果每個線程分攤一個奇數(shù)位,那交換是不是只要一次就夠了呢,可以看到這個算法在多核處理下面還是很有優(yōu)勢的。
最后的運行代碼:

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Xml.Xsl;
 
 namespace ConsoleApplication1
 {
     class Program
     {
         static void Main(string[] args)
         {
             List<int> list = new List<int>() { 9, 2, 1, 6, 0, 7 };
 
             Console.WriteLine("\n排序前 => " + string.Join(",", list));
 
             list = OddEvenSort(list);
 
             Console.WriteLine("\n排序后 => " + string.Join(",", list));
 
             Console.Read();
         }
 
         static List<int> OddEvenSort(List<int> list)
         {
             var isSorted = false;
 
             //如果還沒有排序完,就需要繼續(xù)排序,知道沒有交換為止
             while (!isSorted)
             {
                 //先默認已經(jīng)排序完了
                 isSorted = true;
 
                 //先進行 奇數(shù)位 排序
                 for (int i = 0; i < list.Count; i = i + 2)
                 {
                     //如果 前者 大于 后者,則需要進行交換操作,也要防止邊界
                     if (i + 1 < list.Count && list[i] > list[i + 1])
                     {
                         var temp = list[i];
                         list[i] = list[i + 1];
                         list[i + 1] = temp;
 
                         //說明存在過排序,還沒有排序完
                         isSorted = false;
                     }
                 }
 
                 //再進行 奇數(shù)位 排序
                 for (int i = 1; i < list.Count; i = i + 2)
                 {
                     //如果 前者 大于 后者,則需要進行交換操作,也要防止邊界
                     if (i + 1 < list.Count && list[i] > list[i + 1])
                     {
                         var temp = list[i];
                         list[i] = list[i + 1];
                         list[i + 1] = temp;
 
                         //說明存在過排序,還沒有排序完
                         isSorted = false;
                     }
                 }
             }
 
             return list;
         }
     }
 }

到此這篇關(guān)于C#實現(xiàn)奇偶排序的示例代碼的文章就介紹到這了,更多相關(guān)C# 奇偶排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#中new關(guān)鍵字的三種用法

    C#中new關(guān)鍵字的三種用法

    在C#中,new關(guān)鍵字具有多種不同的用途,主要包括以下三個:作為運算符,作為修飾符,作為泛型約束,文章通過代碼示例將這三種用法介紹的非常詳細,需要的朋友可以參考下
    2024-07-07
  • 基于WPF實現(xiàn)簡單放大鏡效果

    基于WPF實現(xiàn)簡單放大鏡效果

    這篇文章主要為大家詳細介紹了WPF如何實現(xiàn)簡單放大鏡效果,文中的示例代碼講解詳細,對我們學(xué)習(xí)或工作有一定幫助,感興趣的小伙伴可以了解一下
    2022-12-12
  • 淺析C#中ref與out參數(shù)傳遞的核心區(qū)別與實戰(zhàn)指南

    淺析C#中ref與out參數(shù)傳遞的核心區(qū)別與實戰(zhàn)指南

    這篇文章為大家系統(tǒng)梳理了C#中ref與out參數(shù)傳遞的核心區(qū)別與使用場景,ref用于雙向傳遞,調(diào)用前必須初始化,方法內(nèi)可讀寫,out用于單向輸出,方法內(nèi)必須賦值,調(diào)用前無需初始化,下面小編就和大家詳細介紹一下吧
    2026-02-02
  • C#使用EasyModbus進行通訊的實現(xiàn)示例

    C#使用EasyModbus進行通訊的實現(xiàn)示例

    EasyModbus是一個流行的.NET庫,用于實現(xiàn)Modbus TCP、RTU和UDP協(xié)議通信,本文就來介紹一下C#使用EasyModbus進行通訊的實現(xiàn)示例,感興趣的可以了解一下
    2026-01-01
  • c#轉(zhuǎn)換全角半角方法示例

    c#轉(zhuǎn)換全角半角方法示例

    這篇文章主要介紹了c#如何轉(zhuǎn)換全角半角,大家可以看一下下面的代碼方法,可以參考一下
    2013-12-12
  • 淺談Java與C#的一些細微差別

    淺談Java與C#的一些細微差別

    說起C#和Java這兩門語言(語法,數(shù)據(jù)類型 等),個人以為,大概有90%以上的相似,甚至可以認為幾乎一樣。但是在工作中,我也發(fā)現(xiàn)了一些細微的差別
    2013-11-11
  • c#棧變化規(guī)則圖解示例(棧的生長與消亡)

    c#棧變化規(guī)則圖解示例(棧的生長與消亡)

    多數(shù)情況下我們不需要關(guān)心棧的變化,下文會給出一個具體的示例。另外,理解棧的變化對于理解作用域也有一定的好處,因為C#的局部變量作用域是基于棧的。
    2013-11-11
  • macOS系統(tǒng)下Vscode的python配置教程

    macOS系統(tǒng)下Vscode的python配置教程

    這篇文章主要介紹了macOS系統(tǒng)下Vscode的python配置教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • WPF實現(xiàn)窗體亞克力效果的示例代碼

    WPF實現(xiàn)窗體亞克力效果的示例代碼

    這篇文章主要為大家詳細介紹了如何利用WPF實現(xiàn)窗體亞克力效果,文中的示例代碼講解詳細,對我們學(xué)習(xí)或工作有一定幫助,感興趣的小伙伴可以了解一下
    2022-10-10
  • C# MemoryStream類案例詳解

    C# MemoryStream類案例詳解

    這篇文章主要介紹了C# MemoryStream類案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08

最新評論

广宁县| 高陵县| 广东省| 密云县| 龙南县| 上蔡县| 桂阳县| 电白县| 宜都市| 宁南县| 钟山县| 平乐县| 修武县| 中西区| 尖扎县| 西充县| 偃师市| 富锦市| 论坛| 聂拉木县| 隆化县| 金阳县| 揭西县| 鄂伦春自治旗| 罗田县| 伊金霍洛旗| 五指山市| 长子县| 白玉县| 正蓝旗| 惠州市| 公安县| 锡林郭勒盟| 禄劝| 通山县| 迁西县| 宁阳县| 华蓥市| 苗栗县| 巴彦淖尔市| 乐安县|