摘要:效果圖冒泡排序冒泡排序是一種排序算法就是把數(shù)字小的和數(shù)字大的進(jìn)行位置的調(diào)換部分的公司招聘也拿來(lái)當(dāng)做面試題為什么叫冒泡排序冒泡排序就是和水里面產(chǎn)生的氣泡一樣從小到大的慢慢的升起所以就叫冒泡排序完整代碼排序
效果圖:
冒泡排序:
冒泡排序 是一種 排序 算法 就是把 數(shù)字 小的和 數(shù)字 大的進(jìn)行位置的調(diào)換 部分的公司招聘 也拿來(lái)當(dāng)做 面試題 …
為什么叫冒泡排序?
冒泡排序就是 和水里面產(chǎn)生的氣泡一樣從小到大的慢慢的升起 所以就叫冒泡排序
完整代碼:
排序
int[] arr = {12,18,4,6,80,10,14,12,66,19}; for (int i = 0; i < arr.Length; i++) { for (int j=0;j<arr.Length-1;j++) { //大于號(hào)就是 大 到 小 if (arr[i] < arr[j]) { int number = arr[i]; arr[i] = arr[j]; arr[j] = number; } } } foreach (int look in arr) { Console.Write(look+" "); } Console.ReadKey();
定義進(jìn)行排序的數(shù)組:
升序: 小的數(shù)字到大的數(shù)字
降序: 大的 到 小的
int[] arr = {12,18,4,6,80,10,14,12,66,19};
可以看見(jiàn)現(xiàn)在的順序是非常的凌亂的
使用循環(huán)體進(jìn)行換位置:
for (int i = 0; i < arr.Length; i++) { for (int j=0;j<arr.Length-1;j++) { if (arr[i] < arr[j]) { int number = arr[i]; arr[i] = arr[j]; arr[j] = number; } } }
因?yàn)橐M(jìn)行 兩個(gè) 元素的 對(duì)比 所以需要使用 兩個(gè)循環(huán)體 進(jìn)行 元素之間的對(duì)比
第一個(gè)循環(huán)跑一次 而內(nèi)循環(huán)就需要跑 10次(根據(jù)元素的個(gè)數(shù)決定)
if (arr[i] < arr[j]) {int number = arr[i];arr[i] = arr[j]; arr[j] = number;
如果[i]號(hào)元素小于[j]號(hào) 兩個(gè)元素之間就進(jìn)行換位置 其中"number"是中間變量 存儲(chǔ)[i]值
當(dāng)然如果你想通過(guò) 不使用第三方 變量 進(jìn)行交換 也可以這樣
if (arr[i] < arr[j]) { arr[i] = arr[i]+arr[j]; arr[j] = arr[i]-arr[j]; arr[i] = arr[i] - arr[j]; }
額外知識(shí):
不使用第三方 變量 進(jìn)行 兩個(gè) 變量的交換
int a =10;int b =20; a =a+b; b =a+b; a=a-b;
這樣也可以達(dá)到一模一樣的效果 原理還是那樣 只是變的復(fù)雜了一點(diǎn)
但是不建議這里寫 因?yàn)椤?jiǎn)單的都變復(fù)雜化了
假設(shè)這是第一次循環(huán):
i的每一個(gè)元素 j 都會(huì)一個(gè)個(gè)對(duì)比
上面演示的是 升序
降序:
//變成大于號(hào)if (arr[i] > arr[j]) {int number = arr[i]; arr[i] = arr[j]; arr[j] = number; }
變動(dòng)一個(gè)符號(hào)即可
當(dāng)然如果你是初學(xué)者,看不懂 雙重 循環(huán)體 也可以使用Arrar的靜態(tài)方法
進(jìn)行
int[] arr = {12,18,4,6,80,10,14,12,66,19}; Array.Sort(arr); //一建對(duì)數(shù)組 進(jìn)行升序的排序
效果一模一樣
這個(gè)靜態(tài)方法 提供了 升序的排序 但他沒(méi)有提供 降序的方法
不過(guò)可以用他的另外一個(gè)方法 進(jìn)行數(shù)組反轉(zhuǎn)的 來(lái)達(dá)到一樣的效果
int[] arr = {12,18,4,6,80,10,14,12,66,19};Array.Sort(arr); //升序排序 Array.Reverse(arr); //數(shù)祖反轉(zhuǎn)達(dá)到 降序效果
數(shù)組最小值:
求一個(gè)數(shù)組里面的 最小 一位數(shù)
比較簡(jiǎn)單
int[] arr = {-12,18,4,26,100,10,14,12,66,-19}; int max = 0; for (int i = 0; i < arr.Length; i++) { //大于號(hào)就是 最大值 if (arr[i] <max) { max = arr[i]; } } Console.WriteLine(max); Console.ReadKey();
平均值:
整數(shù)/個(gè)數(shù)字
int[] arr = {-12,18,4,26,100,10,14,12,66,-19}; int max = 0; for (int i = 0; i < arr.Length; i++) { max +=arr[i]; } Console.WriteLine(max/arr.Length-1); Console.ReadKey();
練習(xí)題:
生成10個(gè)隨機(jī)數(shù) 進(jìn)行 升序排序 算出 最大值 最小值 平均值
答案:
Random r = new Random(); int[] arr = new int[10]; int average = 0; for (int i = 0; i < arr.Length; i++) { arr[i] = r.Next(-10,100); } for (int i = 0; i < arr.Length; i++) { average += arr[i]; for (int j = 0; j < arr.Length - 1; j++) { if (arr[i] < arr[j]) { int tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } } } foreach (int number in arr) { Console.Write(number + " "); } Console.WriteLine("/n最小值是:" + arr[0]); Console.WriteLine("最大值是:" + arr[arr.Length-1]); Console.WriteLine("平均值是:" + (average / arr.Length - 1)); Console.ReadKey();
純手打,點(diǎn)個(gè)贊唄~
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/125647.html
摘要:良好的排序算法具有進(jìn)行最少的比較和交換的特征。冒泡排序是一個(gè)基于比較的排序算法,被認(rèn)為是效率最低的排序算法之一?,F(xiàn)在讓我們使用實(shí)現(xiàn)冒泡排序算法。插入排序到目前為止,我們已經(jīng)看到了兩種基于比較的排序算法。 預(yù)警 本文適合對(duì)于排序算法不太了解的新手同學(xué)觀看,大佬直接忽略即可。因?yàn)榭紤]到連貫性,所以篇幅較長(zhǎng)。老鐵們看完需要大概一個(gè)小時(shí),但是從入門到完全理解可能需要10個(gè)小時(shí)(哈哈哈,以我自己...
摘要:最差情況輸入數(shù)組按降序排列。平均情況穩(wěn)定性穩(wěn)定希爾排序排序法是對(duì)相鄰指定距離稱為增量的元素進(jìn)行比較,并不斷把增量縮小至,完成排序。若將兩個(gè)有序表合并成一個(gè)有序表,稱為二路歸并。 冒泡排序 從數(shù)組中第一個(gè)數(shù)開(kāi)始,依次遍歷數(shù)組中的每一個(gè)數(shù),通過(guò)相鄰比較交換,每一輪循環(huán)下來(lái)找出剩余未排序數(shù)的中的最大數(shù)并冒泡至數(shù)列的頂端。 function bubbleSort(arr) { for (v...
摘要:代碼實(shí)現(xiàn)六堆排序算法簡(jiǎn)介堆排序是指利用堆這種數(shù)據(jù)結(jié)構(gòu)所設(shè)計(jì)的一種排序算法。九計(jì)數(shù)排序算法簡(jiǎn)介計(jì)數(shù)排序是一種穩(wěn)定的排序算法。計(jì)數(shù)排序不是比較排序,排序的速度快于任何比較排序算法。 贊助我以寫出更好的文章,give me a cup of coffee? 2017最新最全前端面試題 1、插入排序 1)算法簡(jiǎn)介 插入排序(Insertion-Sort)的算法描述是一種簡(jiǎn)單直觀的排序算法。它...
摘要:目錄常見(jiàn)的八種排序常見(jiàn)的八種排序直接插入排序直接插入排序希爾排序希爾排序直接選擇排序直接選擇排序堆排序堆排序冒泡排序冒泡排序快速排序快速排序版本版本挖坑法挖坑法前后指針版前后指針版快速排序代碼 目錄 常見(jiàn)的八種排序 直接插入排序 希爾排序 直接選擇排序 堆排序 冒泡排序? 快速排序 hoar...
閱讀 3668·2023-01-11 11:02
閱讀 4210·2023-01-11 11:02
閱讀 3008·2023-01-11 11:02
閱讀 5148·2023-01-11 11:02
閱讀 4702·2023-01-11 11:02
閱讀 5486·2023-01-11 11:02
閱讀 5236·2023-01-11 11:02
閱讀 3865·2023-01-11 11:02