1、數組定義
int[] arr = new int[1024];
也可以int arr[] = new int[1024];(C++是這種方式, Java推薦上一種)
2、for循環遍歷
class ArrayDemo
{
public static void main(String[] args)
{
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8};
for (int x=0; x<arr.length; x++)
{
System.out.println("arr["+x+"]="+arr[x]+";");
}
}
}//很基礎很簡單
不能用這種方式打印System.out.println(arr);
打印出的是數組arr的哈希地址。乍一看以爲亂碼。
3、另一種思路求最值
另一種思路求最大值/最小值:
public static int getMax2(int[] arr)
{
int max = 0;
//利用數組的角標記錄最大值
for (int x=1; x<arr.length; x++)
{
if(arr[x]>arr[max])
max = x;
}
return arr[max];
}
4、選擇排序:
第一個元素挨個與後面比較,一輪結束最小/大值的排在首位。依次比較第二位元素至末尾,最後比較n-1與n位。
public static void selectSort(int[] arr)
{
for (int x=0; x<arr.length-1; x++)
{
for (int y=x+1; y<arr.length; y++)
{
if(arr[x] > arr[y])
{
int tem=0;
tem = arr[x];
arr[x]=arr[y];
arr[y]=tem;
}
}
}
}
5、冒泡排序:
相鄰兩元素比較,1和2, 2和3,。。。n-1和n。一輪結束最小/大值到最後,再下一輪排列1到n-1。
public static void bubbleSort(int[] arr)
{
for (int x=0; x<arr.length-1; x++)
//外層循環理解爲需要多少個內層循環。
{
for (int y=0; y<arr.length-x-1; y++)
{
if(arr[y] > arr[y+1])
{
int tem=0;
tem = arr[y];
arr[y]=arr[y+1];
arr[y+1]=tem;
}
}
}
}
以上方法好記,但是效率不高,因爲是數組。可以改進方法使用角標index。實際開發使用的是java.util.* 包的功能Array.sort(arr);
6、折半查找:前提是數組是有序排列
原理:查找的元素每次都跟中間角標數組元素比較,若小於則查找左邊, 若大於則查找右邊,一層層深入。
衍生應用,在順序數組中插入一值,保持排序。
代碼示例:
public static int halfSearch(int[] arr, int key)
{
int max, min, mid;
min = 0;
max = arr.length-1;
mid = (min+max)/2;
while (key != arr[mid])
{
if (key < arr[mid])
{
max = mid-1;
}
else if (key > arr[mid])
{
min = mid+1;
}
if(min>max)//此處判斷超出範圍
return -1;
mid = (min+max)/2;
}
return mid;
}
7、以數組的方式轉換16進制。
public static void toHex2(int num)
{
char[] chs = {'0','1','2','3',
'4','5','6','7',
'8','9','A','B',
'C','D','E','F'};
char[] ret = new char[8];
int pos = 0;
while(num != 0)
//這裏用while的目的是判斷num爲零後就不再存儲,這樣取出時就沒有0的數。
{
int tem = num & 0xf;
ret[pos++]=chs[tem];
System.out.println(chs[tem]);
num = num >>> 4;
}
for (int i=pos-1; i>=0; i--)
{
System.out.print(ret[i]+",");
}
}