從今天起複習演算法,寫的不對的地方還請各路大神指點迷津,神仙請繞道。
1.問題描述
給定乙個長度為n的陣列a,查詢元素x是否在a中。
2.解決方案描述
一種最直接的方法是掃瞄a中的所有專案,將每個專案與x比較,如果找到相等的專案a[i],則返回陣列下標i,否則返回-1,表示沒找到。這種方法成為順序搜尋,由於元素比較的最大次數和序列的大小成線性關係,所以又稱為線性搜尋。
3.演算法的**表示
複製**
1 ///
2 /// 線性搜尋
3 ///
4 /// 搜尋的源陣列
5 /// 要搜尋的值
6 /// 如果找到該值,返回該值所在的陣列下標;否則返回-1
7 static int linearsearch(int array, int x)
8
15 return -1;
16 }
複製**
4.演算法的呼叫
複製**
1 static void main(string args)
2 ;
4 console.writeline("測試陣列為:");
5 for (int i = 0; i < testarray.length; i++)
6 ", testarray[i]);
8 }
9 console.writeline("\r\n請輸入你要查詢的整數:");
10 string targetnum = console.readline();
11 int num;
12 while (!int.tryparse(targetnum, out num))
13
17 int result = linearsearch(testarray, num);
18 if (result != -1)
19 console.writeline("你查詢的數字在該陣列的下標為:", result);
20 else
21 console.writeline("在該陣列中找不到你輸入的數字");
22 console.read();
23 }
複製**
5.演算法分析
直觀上,如果陣列是無序的,那麼掃瞄a中所有元素是不可避免的。但是如果陣列是有序的,那麼掃瞄a中所有元素則不是最佳選擇。比如陣列為,如果我要搜尋6是否在陣列中,那麼我將要掃瞄6次,這是最耗時的搜尋。
那麼如何保證在最短時間內找到有序陣列裡的元素呢?下節見分曉。
演算法分析與設計二分搜尋問題Python
設a 0 n 1 是已排好序的陣列。試改寫二分搜尋演算法,使得當搜尋元素x不在陣列a中時,返回小於x的最大元素的位置i和大於x的最小元素的位置j 當搜尋元素x在陣列a中時,返回x在陣列中的位置,此時i和j相同。def binary search arr list,arr lookup arr lon...
演算法 二分搜尋
思路 首先從陣列中間的數把陣列分成兩部分,如果查詢的數比中間的數大,說明接下來需要查詢右邊的部分,令中間的的下標 1為下一次開始查詢的開始位置,再從low到high之間查詢,一直迴圈。root bogon code cat erfen.c include int work int x,int a,i...
二分搜尋與STL二分查詢
用法 搜尋非遞減數列中是否包含某個元素 當資料量比較大的時候,二分比線性搜尋高效得多。流程 查詢36 實現 物件是非遞減序列,如果當資料無序時,需要預先進行一次排序。int binarysearch int a,int key,int n n為陣列長度 rerurn 0 陣列a中不存在key 複雜度...