java從小白到工程師--基礎篇(四)

今天,一起學習一下java中非常重要的內容:數組和冒泡排序。

我們首先看一下數組的定義:

1.可存儲相同數據類型數據連續的存儲單元中;

2.可通過指定數組的名稱和長度來聲明數組;

3.一旦聲明大小,不可更改;

4.數組元素可以通過數組名和索引來進行訪問(注:目前可以這樣理解:存入的每一個數據就是一個元素;java中索引從0開始,即第一個元素的索引是0,第二個元素的索引是1

5.數組可以是一維數組,也可以是多維(即數組的元素是數組)

示例:

public static void main(String[] args) {
		int[] arr;//聲明數組名
		arr =new int[5];//聲明數組大小,當然這兩步可以合併爲一步,此處只爲更好理解
		arr[0]=1;//爲數組添加元素
		arr[1]=2;
		arr[2]=3;
		arr[3]=4;
		arr[4]=5;
		System.out.println("索引爲2的元素是:"+arr[2]);//字符串拼接使用“+”
	}

運行結果:索引爲2的元素是:3。

示例2:

public static void main(String[] args) {
		int arr[] = new int[]{1,2,3,4,5};//定義數組
		System.out.println(arr[2]);//取下角標是2的元素(第三個)
	}
遍歷數組的兩種常用方式

方式一:for循環遍歷,示例如下:

public static void main(String[] args) {
		int arr[] = new int[]{1,2,3,4,5};//定義數組
		for (int i = 0; i < arr.length; i++) {//arr.length爲內置函數,可以得到數組arr的長度(一個元素算一個)
			System.out.println("第"+(i+1)+"個元素是:"+arr[i]);//字符拼接,i從零開始,下角標也是
		}
	}
方式二:增強for循環

展示案例之前先看一下語法:

for(類型   變量名  :  集合或者數組)

在快捷鍵提示下顯示的內容是foreach

看一下示例代碼:

public static void main(String[] args) {
		int arr[] = new int[]{1,2,3,4,5};//定義數組
		for (int i : arr) {//因爲定義的是int類型數組,所以此處的類型要寫int,其他類型同理
			System.out.println("第"+(i+1)+"個元素是:"+arr[i]);
		}
		
	}
下面我們將講解一個比較經典也比較簡單的算法——冒泡排序:

在開始講解之前,先請大家看一段魔性的舞蹈
大家通過舞蹈可以看出,我們在排序的時候並不能一口氣讓所有的數據都排排坐,吃果果。每次只能找出一個最大或者最小的元素,安排妥當。原理如下:

冒泡排序算法的運作如下:(從後往前)
  1. 比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
  2. 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
  3. 針對所有的元素重複以上的步驟,除了最後一個。
  4. 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
上述內容摘自百度百科。

下面我們將在代碼中體現這一算法的邏輯。

public static void main(String[] args) {
		int arr[] = new int[]{8,7,6,5,4,3,2,1};//定義數組
		for(int i=0;i<arr.length-1;i++){//外循環控制循環次數,因爲是兩兩比較,爲了優化,此處次數-1
			for(int j=0;j<arr.length-i-1;j++){//內循環,每次找到一個最大的數字放到最後
				if(arr[j]>arr[j+1]){//交換條件,前一個比後一個大就互換
					int temp = arr[j];//中間變量,相當於兩個裝滿水的碗要互換,需要一個空碗,這個temp就是那個 空碗
					arr[j] = arr[j+1];
					arr[j+1] = temp;
				}
			}
			System.out.println("第"+(i+1)+"次排序結果:");
			for (int k : arr) {//遍歷數組查看結果
				System.out.print(k+"  ");//此處結果不換行,沒有ln
			}
			System.out.println();//換行
		}
		System.out.println("最終排序結果:");
		for (int i : arr) {
			System.out.print(i+"  ");
		}
	}

運行結果如下:


很直觀。

今天先寫到這裏,未完待續~~


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