循序搜尋法 Linear Search

  • 5779
  • 0
  • C++
  • 2016-01-03

循序搜尋法(Linear Search)算是搜尋演算法當中比較簡單的一種,是用來達成"搜尋"目的的。

原理顧名思義就是從第一筆資料開始,依序比對每一筆資料,再來找出所需要的資料。

本文以C++實作執行。

循序搜尋法(Linear Search)會依序比對每一筆資料,所以最大搜索時間為資料大小n,最小搜索時間為1,平均搜尋時間為(n+1)/2。所以其時間複雜度為Ο(n)。

PseudoCode 大致如下:

TYPE linearSearch(TYPE  data[], TYPE  key, TYPE  size)
{
	INDEX i;

	for (i = 0; i < size; i++)
	{
		if (data[i] == key)
		{
			return i;
		}
	}
	return -1;
}

第一個參數 data是陣列名稱,第二個參數key是想要搜索的值,第三個參數size是陣列的大小。

完整程式碼如下:

​
#include <iostream>
using namespace std;

int linearSearch(int[], int, int);

int main() {

	const int size = 100;//陣列大小
	int search = 0;//想要找的值

	int arr[100];//初始化資料陣列

	for (int i = 0; i < size; i++)
	{
		arr[i] = 2 * i;//賦予陣列值: a[0]=0 a[1]=2 a[2]=4 ... a[99]=198
	}

	cout << "Input the value:";
	cin >> search;
	int element = linearSearch(arr, search, size);

	if (element != -1)
	{
		cout << "Found value in element " << element << endl;
	}

	else
	{
		cout << "Value not found" << endl;
	}

	system("pause");

	return 0;
}

int linearSearch(int data[], int key,int size)
{
	int index;

	for (index = 0; index < size; index++)
	{
		if (data[index]==key)
		{
			return index;
		}
	}
	return -1;
}


​

以下是執行結果:

有夢最美 築夢踏實

活在當下 認真過每一天

我是阿夢 也是Ace