黑馬程序員-java基礎-數組&進制轉換

第一講  數組初始化&操做java

一、  數組定義算法

概念:數組是同一種類型數據的集合,其實數組就是一個容器。數組中的元素從0開始編號,這樣方便了對這些元素進行操做(獲取、修改改、排序等)。數組

數組的定義格式有:blog

Int[] arr = new int[10]; ——這裏指定數組的長度,後續須要分別對每個元素賦值;排序

Int[] arr = new int[]{2,1,5,9};——建立數組實體並初始化,不須要指定長度;索引

Int[] arr = {2,1,5,9};——定義數組並初始化;內存

二、  數組操做效率

1)  獲取數組中的元素,一般須要遍歷數組容器

Int[] arr = {2,1,5,9};變量

For(int x = 0;x<arr.length;x++)  //length是數組中表示數組元素個數的屬性。

{

            System.out.print(arr[x]);//遍歷數組arr,打印數組中全部元素。

}

2)  獲取最值

獲取最大值思路:一、獲取最值須要比較,每一次比較都會有一個較大的值,能夠將該較大值存在一個臨時變量中。二、讓數組中的每個元素和這個變量中的值進行比較,若是大於了變量中的值,就將該元素值賦給該變量。三、當全部的元素都比較完成,那麼該變量中的值就是數組中的最大值。

步驟:一、定義變量,初始化爲數組中任意一個元素;二、經過循環語句對數組進行遍歷;三、在遍歷過程當中定義判斷條件,若是遍歷到的元素比變量中的值大,就將元素賦值給變量。

獲取最小值思路:與獲取最大值類似,只是在遍歷數組進行比較時,變量中存儲的是較小值。

獲取最大最小值代碼實現以下:

                      

 

 

第二講 數組排序

一、  選擇排序法

內循環一次,最值出如今頭角標位置上

思路:拿數組第一個元素與後面的元素遍歷比較,將若大於(小於)第一個則二者值互換,第一個元素與其餘元素比較完後,拿第二個元素與後面的元素進行遍歷比較,依次類推,直到遍歷完成,數組排序完成。

實現代碼以下:

二、  冒泡排序法

內循環一次,最值出如今最後角標位置上。

思路:相鄰兩個元素進行比較,若是符合條件(大於或小於)進行值互換;

代碼實現以下:

三、  希爾排序

希爾算法是最快的排序算法。

選擇/冒泡排序法效率低的緣由是:比較完成後須要在堆內存中進行元素對換。解決方案:將須要換位的元素腳標存放在內存中,最後一次互換就直接數組元素互換。

四、  Java中有自帶的排序方法:Arrays.sort(arr);

 

 

第三講  數組查找操做

一、  獲取關鍵值在數組中第一次出現的位置

思路:遍歷數組,並與該值進行比較,若是相等則返回角標位置。

代碼實現以下:

二、  折半查找算法

折半查找能夠減小遍歷的次數,從而提升查找的效率,但要求該數組必須是有序的。

思路:用關鍵值與數據中間元素進行比較,而後根據比較結果判斷關鍵值在前半部分仍是後半部分,而後再折半查找那一部分,依次類推。

代碼實現以下:

 

三、  練習

將一個元素插入到一個有序數組中,保證該數組還是有序的。若是獲取該元素應該插入數組的哪一個位置。

思路:

折半算法在數組中查找該元素,返回最小下角標,該下角標就是元素插入數組的位置。

 

 

第四講  進制轉換

一、  十進制轉成二進制

二、  十進制轉成十六進制

三、  查表法將十進制轉成十六進制

思路:先將十六進制的元素(0~F)臨時存儲在一個表中,每一次&15後的值做爲索引區查找創建好的表,就能夠找到對應的元素。。

代碼實現以下:

四、  查表法將十進制轉成二進制

 

知識點總結

一、  數組有多種定義和初始化方式

1)  若不知道數組具體值,但直到數據長度,能夠定義數據並指定長度:int [] arr = new int[10],後續只能遍歷將元素賦值給數組中的單獨位置;

2)  若不知道數組長度,但直到數組中的值,能夠用這種方式定義並初始化:int [] arr = new int[]{1,2,3}

二、  數組排序

都須要利用嵌套循環。

1)選擇排序法,內循環一次,最值出如今頭角標位置上;

2)冒泡排序法,內循環一次,最值出如今最後角標位置上;

3)希爾排序效率最高;

4)java中有自帶的排序程序:Arrays.sort(arr);

三、  查找

查找某個關鍵字在數組中第一次出現的位置,折半算法效率較高。

四、  進制轉換

經過取餘來獲取某個位上的值,能夠經過查表法來進行轉換,取值更方便。

相關文章
相關標籤/搜索