碼農如何才能快速解決亂碼、bug等問題?這篇乾貨你一定要看!

冒泡排序是Java中非常經典的一種排序方法,可以將多個數字進行升序排序,效率比較高。今天播妞和大家一起來看看冒泡排序的具體思路,便於在學習Java碼代碼時思路清晰,少點bug~

冒泡排序的原理

兩個相鄰的數比較大小,將兩個數中較大的數往右邊放,小的往左邊放。

冒泡排序的圖解

1.首先定義一個數組:int[] arr = {4,2,5,3,1}

2.比較的圖解是這樣的:

冒泡排序的思路解析

依次比較前後兩個數的大小,如果後面的比前面的數小,那麼直接將小的放在左邊,大的數放在右邊,以此類推。

例如我們定義的數組:int[] arr = {4,2,5,3,1}

第一圈比較

1.用arr[0]和arr[1]進行比較,那麼2比4小,那麼2往左邊移一位,4往右邊移一位;

2.然後用arr[1]和arr[2]進行比較,現在4比5小,所以不動;

3.再用arr[2]和arr[3]進行比較,現在5比3大,所以將3往左邊移動一位,5往右邊移動一位;

4.再用arr[4]和arr[4]進行比較,現在5比1大,所以將1往左邊移動一位,5往後邊移動一位,這樣就把最大的數放到了最右邊*現在通過比較並且移動之後,數組arr中的元素變成了{2,4,3,1,5}。

第二圈比較

1.用arr[0]和arr[1]進行比較,那麼2比4小,所以不用動;

2.用arr[1]和arr[2]進行比較,那麼4比3大,所以將3往左邊移動一位,4往右邊移動一位;

3.用arr[2]和arr[3]進行比較,那麼4比1大,所以將1往左邊移懂一位,4往右邊移動一位;

*由於最大的已經在最右邊了,所以不用和arr[4]進行比較了,現在通過第二圈比較之後的數組元素變成了{2,3,1,4,5}。

*注意,現在第二圈比較的次數少了一次

第三圈比較

1.用arr[0]和arr[1]進行比較,那麼2比3小,所以不用動;

2.用arr[1]和arr[2]進行比較,那麼3比1大,所以將1往左邊移動一位,3往右邊移動一位*現在通過第三圈的比較,數組中的元素變成了{2,1,3,4,5} *注意,現在第三圈比較的次數又少了一次。

第四圈比較

1.用arr[0]和arr[1]進行比較,那麼2比1大,所以將1往左邊移動一位,2往右邊移動一位。

*現在用過第四圈的比較,數組中的元素變成了{1,2,3,4,5},這樣就比較完成了。

那麼通過這4圈的比較,可以確定我們數組的長度爲5,但是我們比較了4次,所以我們可以確定,我們循環比較了4圈。

所以,外層for循環可以確定爲for(int i = 0,i<arr.length-1;i++).

每一圈比較的次數都會比上一圈的比較次數少1次,那麼可以推斷出來。

a)進行第一圈元素比較時,內層循環次數爲數組長度 - 1

b)進行第二圈元素比較時,內層循環次數爲數組長度 - 2

c)依次類推,得出結論:進行第n圈元素比較時,內層循環次數爲數組長度 - n

那麼這個n的變化特點其實是跟外層for循環中的i是一致的,所以我們內存for循環可以確定爲 for(int i = 0,i<arr.length-1-i;i++)

形成代碼

//冒泡排序

public static void bubbleSort(int[] arr) {

//功能

//外層循環用來控制數組循環的圈數

for (int i = 0; i < arr.length-1; i++) {

//內層循環用來完成元素值比較,把大的元素值互換到後面

for (int j = 0; j < arr.length-1-i; j++) {

if (arr[j] > arr[j+1]) {

int temp = arr[j];

arr[j] = arr[j+1];

arr[j+1] = temp;

}

}

}

}

冒泡排序總結

以上是冒泡排序的具體思路分析,學習冒泡排序需要捋清楚其過程,主要是分析冒泡排序是怎麼比較的。

知道了冒泡排序的原理以及形成了代碼,很多人也難免在敲代碼的過程中出現一些狀況,比如出現亂碼的情況。

程序員的生活中,從來不缺亂碼的狀況,缺少的是一眼發現亂碼原因的能力。

播妞給大家推薦一個可以靈活解決亂碼問題的課程,小白也能學會哦。(文末附有領取方式)

課程名稱

詳講編碼與解碼,靈活解決亂碼難題
完整視頻:http://yun.itheima.com/course/638.html?2005stt
配套資料:https://pan.baidu.com/s/1Dp9c4u25HojnIA1EG3ntXQ 提取碼:0bjg

課程簡介

工作中,很多開發者面對亂碼問題,總是難以解決,以至於搜索各種資料,然而並不理解,死記硬背,當再次出現此類問題時,不能靈活的解決,並且花大量的時間搜索資料。這就是本課程產生的背景,本課程主要講解了爲什麼出現編碼與解碼,哪些常見的編碼表,每種編碼表如何解析,以及出現亂碼問題的原理與解決方案,同時演示了Java中常見的亂碼現象,並分析了亂碼原因,總結了解決方案。

同時,課程中還演示了一些日常工作中習以爲常的習慣的原理,大家通過本課程的學習,便可以靈活並輕鬆的解決常見的亂碼問題。

適用人羣

1.零基礎的初學者。這一類人羣可能學習本課程時理解不一定很深刻,畢竟很多現象初學者沒有遇到過,但是對將來的全面學習編程起到鋪墊作用。

2. 有一定的Java基礎,這一類人羣通過對本課程的學習,會對編碼解碼亂碼形成很強的知識體系,並且可以靈活應對今後的亂碼問題。

課程亮點

系統的學習亂碼產生的原因,打破了很多開發者對解決亂碼問題死記硬背的格局,通過學習本課程,開發者可以根據開發中產生的亂碼情況自己分析原理,靈活的解決亂碼問題。

本課程深刻解析了各種現象的原理,比如:

1.爲什麼出現Unicode的編碼

2.爲什麼windows的簡體中文系統 默認使用的GBK編碼而不是Unicode

3.爲什麼我們開發環境都是UTF-8而不是Unicode默認的UTF-16

4.爲什麼有大端和小端之分

5.爲什麼有BOM

6.爲什麼tomcat的默認字符緩衝區編碼是ISO-8859-1編碼

7.java的運行參數 file.encoding有什麼作用

8.字符流複製文件的原理

課程內容

章節一 什麼是編碼與解碼

章節二 常見的編碼表

章節三 Java的char字符

章節四 String類

章節五 IO流-字符流

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章