1. 程式人生 > >面試中常見的陣列的操作:遍歷,最值,反轉,氣泡排序,二分查詢(附程式碼)

面試中常見的陣列的操作:遍歷,最值,反轉,氣泡排序,二分查詢(附程式碼)

陣列:儲存同一種資料型別的多個元素的容器;陣列中的索引從0開始,最大編號是陣列的長度-1(減1);

下面給大家列出陣列常見的幾種操作:

    A 遍歷

  /**
* 遍歷
*/
public static void printArray(int[] arr){

System.out.print("[");
for (int i = 0; i < arr.length; i++) {
if (i==arr.length-1) {
System.out.print(arr[i]+"]");
}else{
System.out.print(arr[i]+",");
}
}
System.out.println();
}

      B 獲取最值

    /**
* 獲取最值
*/
private static int getMax(int[] arr){
int max = arr[0];//假設最大值為第一個元素
for (int i = 0; i < arr.length; i++) {
if (arr[i]>max) {
max=arr[i];
}
}
return max;
}


C  陣列反轉

/**
* 氣泡排序
*/
private static int[] boolSort(int [] arr){
printArray(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;
}
}


}
printArray(arr);//方法執行完成後,重新看下陣列
return arr;
}

執行結果:

[1,2,5,8]
[8,5,2,1]


接下來是面試命中率比較高的了哦

D 氣泡排序

先解釋一下這個需求:需求:陣列元素:{24, 69, 80, 57, 13} 請對陣列元素進行排序。 (升序,從小到大)
                                       相鄰元素兩兩比較,大的往後放,第一次完畢,最大值出現在了最大索引處;

/**
* 氣泡排序
*/
private static int[] boolSort(int [] arr){
printArray(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;
}
}
}
printArray(arr);//方法執行完成後,重新看下陣列
return arr;
}



 E:二分查詢

/**
* 二分查詢
*/
public static int binarySearch(int[] arr , int value){
int minIndex = 0 ;
int maxIndex = arr.length - 1 ;

while(minIndex <= maxIndex){

int midIndex = (minIndex + maxIndex) >>> 1 ;

if(arr[midIndex] == value){
System.out.println(midIndex);
return midIndex ;
}else if(arr[midIndex] > value){
maxIndex = midIndex - 1 ;//最大索引往前走
}else if(arr[midIndex] < value){
minIndex = midIndex + 1 ;//最小索引往後走
}
}
return -1 ;//最後實在找不到了返回-1
}


二分查詢原理圖: