一、數組定義
int[] arr = new int[2];
int arr[] = new int[2];
int[] arr = new int[]{3,1,6,5,4};
int[] arr = {3,1,6,5,4};
eg:
Int[] arr=new int[4]
Arr.length
System.out.println(arr)(輸出引用)
二、數組--選擇排序
/*
選擇排序。
內循環結束一次,最值出現頭角標位置上。
*/
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 temp = arr[x];
arr[x] = arr[y];
arr[y]= temp;
*/
swap(arr,x,y);
}
}
}
}
性能低,代碼簡單,在堆內存中消耗資源比較大.
三、冒泡排序
/*
冒泡排序
*/
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++)//-x:讓每一次比較的元素減少,-1:避免角標越界。
{
if(arr[y]<arr[y+1])
{
/*
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
*/
swap(arr,y,y+1);
}
}
}
}
/*
發現無論什麼排序。都需要對滿足條件的元素進行位置置換。
所以可以把這部分相同的代碼提取出來,單獨封裝成一個函數。
*/
public static void swap(int[] arr,int a,int b)
{
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
Arrays.sort(arr);//java中已經定義好的一種排序方式。開發中,對數組排序。要使用該句代碼。
四、折半查找
int x = Arrays.binarySearch(arr,190);//java提供好的一個進行折半查找的功能。開發時使用這個。
折半查找。提高效率,但是必須要保證該數組是有序的數組。
public static int halfSearch(int[] arr,int key)
{
int min,max,mid;
min = 0;
max = arr.length-1;
mid = (max+min)/2;
while(arr[mid]!=key)
{
if(key>arr[mid])
min = mid + 1;
else if(key<arr[mid])
max = mid - 1;
if(min>max)
return -1;
mid = (max+min)/2;
}
return mid;
}
第二種方式
public static int halfSearch_2(int[] arr,int key)
{
int min = 0,max = arr.length-1,mid;
while(min<=max)
{
mid = (max+min)>>1;
if(key>arr[mid])
min = mid + 1;
else if(key<arr[mid])
max = mid - 1;
else
return mid;
}
return -1;
}
練習:有一個有序的數組,想要將一個元素插入到該數組中,
還要保證該數組是有序的。如何獲取該元素在數組中的位置。
public static int getIndex_2(int[] arr,int key)
{
int min = 0,max = arr.length-1,mid;
while(min<=max)
{
mid = (max+min)>>1;
if(key>arr[mid])
min = mid + 1;
else if(key<arr[mid])
max = mid - 1;
else
return mid;
}
return min;
}