軟體開發工程師筆試題系列之陣列篇

本文簡介:

陣列不僅僅是在程式設計學習過程中的一個難點,也是畢業生初入職場,在筆試過程中容易陣亡的“重災區”。

鳥叔整理了一些在企業招聘過程中,有關於陣列的高頻筆試題,並附有答案與解析!

軟體開發工程師筆試題系列之陣列篇

挑戰開始:

1。已知陣列:int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 使用折半查詢演算法,輸入數值,獲取數值對應的索引。

int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };//獲取數值2對應的索引資訊Console。WriteLine(HalfFind(array, 2));//折半查詢方法public static int HalfFind(int[] array,int findNumber) { int lowIndex = 0; int highIndex = array。Length - 1; int midIndex; while (lowIndex<= highIndex) { midIndex = (lowIndex + highIndex) / 2; if (array[midIndex] == findNumber) { return midIndex; } else if (array[midIndex] < findNumber) { lowIndex = midIndex + 1; } else { highIndex = midIndex - 1; } } return -1;}

題目解析:

使用折半查詢(二分法),注意事項:僅適用於對已有順序的陣列、資料進行操作!!!

折半查詢演算法步驟:

設定查詢範圍的下限low,上限high,由此確定查詢範圍的中間位置mid;

中間位置的值等於待查的值,查詢成功。中間位置的值小於待查的值,則low=mid+1。中間位置的值大於待查的值,則high=mid-1。

直到low>high,查詢失敗。

軟體開發工程師筆試題系列之陣列篇

2。將陣列 int[] array = { 8, 4, 20, 98, 28, 1 }; 按正序排列(選擇排序演算法)。

int[] array = { 8, 4, 20, 98, 28, 1 };int temp;for (int i = 0; i < array。Length - 1; i++){ for (int j = i + 1; j < array。Length; j++) { if (array[i] > array[j]) { temp = array[i]; array[i] = array[j]; array[j] = temp; } }}for (int i = 0; i < array。Length; i++){ Console。WriteLine($“array[{i}]={array[i]}”);}

題目解析:

選擇排序的工作原理是:第一次從待排序的資料元素中選出最小(或最大)的一個元素,存放在序列的起始位置,然後再從剩餘的未排序元素中尋找到最小(大)元素,然後放到已排序的序列的末尾。以此類推,直到全部待排序的資料元素的個數為零。

軟體開發工程師筆試題系列之陣列篇

3。將陣列 int[] array = { 5, 4, 3, 2, 1 }; 按正序排列(氣泡排序演算法)。

int[] array = { 5, 4, 3, 2, 1 };int temp;for (int i = 0; i < array。Length - 1; i++){ for (int j = array。Length - 1; j > i; j——) { if (array[j] < array[j - 1]) { temp = array[j]; array[j] = array[j - 1]; array[j - 1] = temp; } }}for (int i = 0; i < array。Length; i++){ Console。WriteLine($“array[{i}]={array[i]}”);}

題目解析:

氣泡排序工作原理:重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果順序錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換。

軟體開發工程師筆試題系列之陣列篇

4。隨機生成1-100不重複的陣列,隨機數範圍為1-100。

//定義長度為100的陣列int[] intArray = new int[100];//定義隨機數物件,用於生成隨機數Random rd = new Random();//標誌位 用於判重bool flag = false;//索引計數器int count = 0;while (true){ //隨機生成1-100範圍的數值 int number = rd。Next(1, 101); for (int i = 0; i < intArray。Length; i++) { if (intArray[i] == number) { flag = true; break; } } if (flag) { flag = false; continue; } else { intArray[count] = number; } //當陣列的最後一位值不為預設的0,證明賦值過程結束 if (intArray[intArray。Length - 1] != 0) { break; } count++;} //排序陣列 Array。Sort(intArray); //列印最終的結果 foreach (int i in intArray) { Console。WriteLine(i); }

5。將下列陣列 int[] array = {1,2,3,4,5}; 實現反轉操作。

int[] array = { 1, 2, 3, 4, 5 };//臨時變數,存放陣列互換值int temp = 0;//以陣列中間為軸,陣列倆邊元素進行互換for (int i = 0; i < array。Length / 2; i++){ temp = array[i]; array[i] = array[array。Length - i - 1]; array[array。Length - i - 1] = temp;}//輸出結果foreach (int i in array){ Console。WriteLine(i);}

題目解析:

軟體開發工程師筆試題系列之陣列篇

6。 在一個未排序的整型陣列中,如何找到最大和最小的數字。

int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };//定義最大值、最小值int max, min;//假設最大值與最小值,為陣列的第一項max = min = array[0];//從陣列第二項開始迭代,進行迴圈比較for (int i = 1; i < array。Length; i++){ if (max < array[i]) { max = array[i]; } if (min > array[i]) { min = array[i]; }}Console。WriteLine($“max={max},min={min}”);

7。查詢並輸出,下列陣列 int[] array = {1,2,2,2,3,3,4,5,6,6,7}; 中的 重複元素。

int[] array = {1,2,2,2,3,3,4,5,6,6,7};//定義計數器int count = 0;//迴圈迭代每一項,統計重複數量for (int i=0;i

8。已知陣列:

int

[] array = {1,2,3,4,0}; 0代表空位,輸入插入位置以及插入值,實現陣列的插入操作。

//定義陣列長度為5,0位代表剩餘的空位置int[] array = {1,2,3,4,0};//定義插入的索引位置int index = 0;//定義插入的值int number = 666;//將插入位置以後的內容,包含插入位置,向後移動,騰出位置for (int i= array。Length-1; i>index;i——) { array[i] = array[i-1];}//將想插入的值,插入到索引位置array[index] = number;//遍歷輸出結果foreach (int i in array){ Console。WriteLine(i);}

9。已知陣列:int[] array = {1,2,3,4,5}; 輸入要刪除的元素下標,實現陣列項刪除操作,例如:輸入下標2,結果int[] array = {1,2,4,5,0};

int[] array = {1,2,3,4,5};//需要刪除元素的座標為2int index = 2;//從刪除座標開始,先前進位for (int i=index;i

10。將陣列:

int

[] array = {1,2,2,2,3,3,4,5,6,6,7}; 中的重複項移除。

int[] array = {1,2,2,2,3,3,4,5,6,6,7};//根據原始陣列長度,生成臨時陣列容器,存放不重複值int[] tempArray = new int[array。Length];//定義索引計數器int index = 0;//定義標誌位bool flag = false;//迴圈迭代每一項,統計重複數量for (int i=0;i

喜歡的小夥伴可以關注我,一起交流學習!我是IT鳥叔,一位喜歡寫程式、釣魚、喝茶、玩遊戲的中年大叔!

軟體開發工程師筆試題系列之陣列篇