iOS 演算法面試題(一)

2021-09-29 10:21:18 字數 1736 閱讀 4382

1、不用中間變數,用兩種方法交換a和b的值

// 1.中間變數

void swap(int a, int b)

// 2.加法

void swap(int a, int b)

// 3.異或(相同為0,不同為1. 可以理解為不進製加法)

void swap(int a, int b)

2、求最大公約數

/** 1.直接遍曆法 */

int maxcommondivisor(int a, int b)

}return max;

}/** 2.輾轉相除法 */

int maxcommondivisor(int a, int b)

return b;

}// 擴充套件:最小公倍數 = (a * b)/最大公約數

3、模擬棧操作

**#include

//保護全域性變數:在全域性變數前加static後,這個全域性變數就只能在本檔案中使用

static int data[1024];//棧最多能儲存1024個資料

static int count = 0;//目前已經放了多少個數(相當於棧頂位置)

//資料入棧 push

void push(int x)

//資料出棧 pop

int pop()

//檢視棧頂元素 top

int top()

//查詢棧滿 full

bool full()

return 0;

}//查詢棧空 empty

bool empty()

return 0;

}int main()

//出棧

while(!empty())

printf("\n");

return 0;

}

4、排序演算法

選擇排序、氣泡排序、插入排序三種排序演算法可以總結為如下:

都將陣列分為已排序部分和未排序部分。

1.選擇排序將已排序部分定義在左端,然後選擇未排序部分的最小元素和未排序部分的第乙個元素交換。

2.氣泡排序將已排序部分定義在右端,在遍歷未排序部分的過程執行交換,將最大元素交換到最右端。

3.插入排序將已排序部分定義在左端,將未排序部分元的第乙個元素插入到已排序部分合適的位置。

4.1、選擇排序

void selectsort(int *arr, int length) }}

}

4.2、氣泡排序

void bubllesort(int *arr, int length) } }

}

5、折半查詢(二分查詢)

折半查詢:優化查詢時間(不用遍歷全部資料)

折半查詢的原理:

// 已知乙個有序陣列, 和乙個key, 要求從陣列中找到key對應的索引位置

int findkey(int *arr, int length, int key)  else if (key < arr[mid])  else 

}return -1;

}

iOS面試題 一

圖中包含的設計模式 delegate 模式 notification kvo 觀察者模式 target action 命令模式 mvc 中介者模式 內建了策略模式 裝置並不在開發者賬號裡 有 些閃退,像ios10的時候,要我們加的那個訪問許可權,如相機的訪問,就是在plist 檔案 面加上.清 快取...

iOS面試題總結(一)

1.為什麼不能給類別category 新增成員變數?extension呢?2.iskindofclass 和 ismemberofclas區別?3.weak的實現原理 4.理解 self class 與 super class 5.ios中的記憶體管理機制 6.block如何訪問外部變數?下劃線 b...

iOS面試題 Swift篇(一)

swift是蘋果在2014年6月wwdc發布的全新程式語言,借鑑了js,python,c ruby等語言特性,看上去偏指令碼化,swift 仍支援 cocoa touch 框架 swift更加安全,它是型別安全的語言。swift容易閱讀,語法和檔案結構簡易化。swift更易於維護,檔案分離後結構更清...