C#實現冒泡排序

一、算法原理

?

1、比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。

2、對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最后一對。在這一點,最后的元素應該會是最大的數。

3、針對所有的元素重復以上的步驟,除了最后一個。

4、持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。

?

二、算法分析

?

平均時間復雜度:冒泡排序最好為O(n)?,最壞為O(n2),平均時間復雜度為O(n2)

空間復雜度:O(1) ?(用于交換)

?

三、算法穩定性

?

冒泡排序就是把小的元素往前調或者把大的元素往后調。比較是相鄰的兩個元素比較,交換也發生在這兩個元素之間。所以,如果兩個元素相等,我想你是不會再無聊地把他們倆交換一下的;如果兩個相等的元素沒有相鄰,那么即使通過前面的兩兩交換把兩個相鄰起來,這時候也不會交換,所以相同元素的前后順序并沒有改變,所以冒泡排序是一種穩定排序算法。

?

四、冒泡排序有兩個很明顯的優勢

1.“編程復雜度”很低,很容易寫出代碼;

2.具有穩定性,這里的穩定性是指原序列中相同元素的相對順序仍然保持到排序后的序列,而堆排序、快速排序均不具有穩定性。 ?

五、C#冒泡排序算法

?
C# 代碼 ??復制
//冒泡排序
void BubbleSort(int array[],int n)
{int i=0; int j=0; int temp=0;int flag = 0;for(i=0;i<n - 1 ;i++)   /*外循環控制排序的總趟數*/
{flag = 0;   /*本趟排序開始前,交換標志應為假*/for(j=n-1;j > i;j--) /*內循環控制一趟排序的進行*/ 
{ if(array[j] < array[j-1] ) /*相鄰元素進行比較,若逆序就交換*/ { temp =array[j]; array[j] = array[j-1]; array[j-1] = temp; flag = 1; /*發生了交換,故將交換標志置為真*/ } } if (flag == 0) /*本趟排序未發生交換,提前終止算法*/ break; /* printf("第%d趟排序結果: \\n",i+1); PrintArray(array,n); */ } } 

?

算法的應用

?
C# 代碼 ??復制
//打印數組
void PrintArray(int  array[] , int n)
{int i;for(i=0;i<n;i++)printf(" %d ",array[i]);printf("\\n");
}void TestBubbleSort()
{int array[8] ={38,20,46,38,74,91,12,25};BubbleSort(array,8);PrintArray(array,8);
}

?

輸出形式

?

第1趟?? 第2趟? 第3趟?? 第4趟?? 第5趟?? 第6趟?? 第7趟

12????? 12????? 12????? 12????? 12????? 12????? 12?????????????????????????????

38????? 20????? 20????? 20????? 20????? 20????? 20

20????? 38????? 25????? 25????? 25????? 25????? 25

46????? 25????? 38????? 38????? 38????? 38????? 38

38????? 46????? 38????? 38????? 38????? 38????? 38

74????? 38????? 46????? 46????? 46????? 46????? 46

91????? 74????? 74????? 74????? 74????? 74????? 74

25????? 91????? 91????? 91????? 91????? 91????? 91 ?

轉載于:https://www.cnblogs.com/gc2013/p/4059330.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258060.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258060.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258060.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PHP - 使用 Pear 進行安裝和卸載包

安裝&#xff1a; 首先運行到php根目錄&#xff1a; 輸入要安裝的包文件名&#xff1a; 使用語法&#xff1a; pear install 要安裝包的名稱 回車確認&#xff1a; 如果沒有其他意外&#xff0c;顯示安裝成功。查看安裝的包的信息&#xff1a; 語句&#xff1a; pear info 包的…

CYQ.Data 輕量數據層之路 V2.0 震撼驚世 支持多數據庫/內置Aop(二十五)

所有文章索引&#xff1a;CYQ.Data 輕量數據層之路 框架開源系列 索引 前言&#xff1a; 從V1.5發布到現在時隔20天了&#xff0c;終于發布2.0版本了&#xff0c;2.0系列版本由于引入多數據庫支持&#xff0c;內部結構改動較大。 但是外面調用方式仍保持一致向下兼容&#xff0…

matlab 捕食者和獵物,MATLAB - 追求曲線(捕食者/獵物)

在我的工程課上&#xff0c;我們編寫了一個“非平凡的”捕食者/獵物追捕問題。以下是情況的要點&#xff1a;有一個獵物試圖逃脫捕食者。每個都可以建模為可以在MATLAB中制作動畫的粒子(我們必須使用這種編碼語言)。獵物&#xff1a;可以比捕食者更容易操縱(轉彎)捕食者&#x…

SQL Server 2012安裝圖解

方法/步驟 在資源管理器中雙擊SQL Server 2012的安裝光盤&#xff0c;此時會出現一個安裝窗口&#xff0c;在左側的界面中點擊“安裝”選項卡&#xff0c;如圖所示。然后點擊右邊的第一項“全新SQL Server 獨立安裝...”選項。 點擊“下一步”按鈕繼續下一步安裝。耐心等待片刻…

C#中讀寫INI文件

INI文件就是擴展名為“ini”的文件。在Windows系統中&#xff0c;INI文件是很多&#xff0c;最重要的就是“System.ini”、“System32.ini”和“Win.ini”。該文件主要存放用戶所做的選擇以及系統的各種參數。用戶可以通過修改INI文件&#xff0c;來改變應用程序和系統的很多配…

html5響應式設置meta

1 <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <!--放大頁面到設備合適的分辨率--> 若不支持&#xff0c;請使用兼容ie的js 1 <!--[if lt IE 9]> 2 <script src"http://css3-mediaqueries-js.goo…

jmap在ubuntu上DebuggerException: Can't attach to the process

解決&#xff1a; 臨時&#xff1a; 1.echo 0 >/proc/sys/kernel/yama/ptrace_scope 永久&#xff1a; 2.修改 /etc/sysctl.d/10-ptrace.conf&#xff0c;設置kernel.yama.ptrace_scope0 參考&#xff1a;http://bugs.java.com/bugdatabase/view_bug.do?bug_id7050524轉載于…

C/C++中對鏈表操作的理解實例分析

鏈表概述   鏈表是一種常見的重要的數據結構。它是動態地進行存儲分配的一種結構。它可以根據需要開辟內存單元。鏈表有一個“頭指針”變量&#xff0c;以head表示&#xff0c;它存放一個地址。該地址指向一個元素。鏈表中每一個元素稱為“結點”&#xff0c;每個結點都應包括…

idea寫java spark程序,Spark : 在IDEA中用scala編寫Spark的WordCount程序并提交運行

使用IDEA新建maven工程&#xff0c;添加相關依賴&#xff1a;1.81.82.11.112.3.02.7.7utf-8org.scala-langscala-library${scala.version}org.apache.sparkspark-core_2.11${spark.version}org.apache.hadoophadoop-client2.7.7給項目添加scala支持&#xff0c;新建Scala Objec…

Contest - 2014 SWJTU ACM 手速測試賽(2014.10.31)

題目列表&#xff1a; 2146 Problem A【手速】闊綽的Dim2147 Problem B【手速】頹廢的Dim2148 Problem C【手速】我的滑板鞋2149 Problem D【手速】潦倒的Dim2150 Problem E【手速】被NTR的Dim2146 Problem A&#xff1a; 簡單的最長回文串統計算法&#xff0c;這里沒有過高要求…

利用Vagrant and VirtualBox搭建core os環境

利用Vagrant and VirtualBox搭建core os環境 系統環境 ubuntu 14.04 x64vagrant 1.7.4virtualbox 4.3.10git 1.9.1# 安裝 virtualbox, git sudo apt-get install virtualbox, git# 軟件中心的vagrant版本太低,因此去官網獲取最新的軟件包地址 wget https://releases.hashicorp.…

php關注 取消關注事件,微信公眾平臺開發關注/取消關注事件例子

用戶在關注與取消關注公眾號時&#xff0c;微信會把這個事件推送到開發者填寫的URL。方便開發者給用戶下發歡迎消息或者做帳號的解綁下面是一個微信公眾平臺關注和取消關注的實例:responseMsg();} else {$wechatObj->valid();}class wechatCallbackapiTest {public function…

DFS應用——遍歷有向圖+判斷有向圖是否有圈

【0】README 0.1&#xff09; 本文總結于 數據結構與算法分析&#xff0c; 源代碼均為原創&#xff0c; 旨在 理解 “DFS應用——遍歷有向圖判斷有向圖是否有圈” 的idea 并用源代碼加以實現 &#xff1b;0.2&#xff09; 判斷有向圖是否有圈的rule—— 一個有向圖是無圈圖當且…

AbleCloud智能行業解決方案助力體重秤企業向“中國智造”轉變

近年來&#xff0c;體重秤消費群體的年齡層次與需求逐漸向多元化發展&#xff0c;品牌眾多、競爭激烈的傳統體重秤行業迎來了前所未有的挑戰——智能體重秤成為行業發展的大趨勢&#xff0c;功能單一、同質化嚴重已經成為阻礙傳統體重秤企業成長的桎梏&#xff0c;打造出具備“…

javaScript事件(一)事件流

一、事件 事件是文檔或者瀏覽器窗口中發生的&#xff0c;特定的交互瞬間。 事件是用戶或瀏覽器自身執行的某種動作&#xff0c;如click,load和mouseover都是事件的名字。 事件是javaScript和DOM之間交互的橋梁。 你若觸發&#xff0c;我便執行——事件發生&#xff0c;調用它的…

php輸入對話框,如何使用JavaScript實現輸入對話框

我們有時在網頁上進行注冊用戶信息時會出現彈窗進行提示&#xff0c;你需要輸入內容進行確認&#xff0c;那么&#xff0c;這樣的輸入對話框是怎么實現的呢&#xff1f;本篇文章就來介紹關于使用JavaScript實現輸入對話框的方法。我們可以使用prompt顯示輸入對話框要在JavaScri…

軟件缺陷的種類劃分

按照軟件缺陷的產生原因&#xff0c;可以將其劃分為不同的缺陷類別&#xff1a; 1、功能不正常 簡單地說就是所應提供的功能&#xff0c;在使用上并不符合產品設計規格說明書中規定的要求&#xff0c;或是根本無法使用。這個錯誤常常會發生在測試過程的初期和中期&#xff0c;有…

python——no module named XX

加PYTHONPATH吧&#xff0c;新建一個系統環境變量&#xff0c;把你的目錄復制進去即可轉載于:https://www.cnblogs.com/MarsMercury/p/4992629.html

CodeVS 1081 線段樹練習 2

1081 線段樹練習 2 時間限制: 1 s空間限制: 128000 KB題目等級 : 大師 Master題目描述 Description給你N個數&#xff0c;有兩種操作 1&#xff1a;給區間[a,b]的所有數都增加X 2&#xff1a;詢問第i個數是什么&#xff1f; 輸入描述 Input Description第一行一個正整數n&#…

bzoj4144 [AMPPZ2014]Petrol 圖論 最短路 并查集

bzoj4144 [AMPPZ2014]Petrol 圖論 最短路 并查集 1、這道題我們主要就是要求出距離一個油站的最近的油站 首先我們dijkstra 求出任意一個點到 離他最近的油站的距離 2、然后會發現 如果一條邊的兩個端點 的最近油站不同的話 那么這條邊就會在這兩個油站的最短路上 3、然后對于…