您的位置:首页 > 其它

查找算法(一):顺序查找

2017-08-31 13:26 246 查看
查找-是最常见的数据操作之一,数据结构核心运算之一,其重要性不言而喻。顺序查找是人们最熟悉的查找策略,对于小规模的数据,顺序查找是个不错的选择。

(一)基本思想

从数据的第一个元素开始,依次比较,直到找到目标数据或查找失败。

1 从表中的第一个元素开始,依次与关键字比较。

2 若某个元素匹配关键字,则查找成功。

3 若查找到最后一个元素还未匹配关键字,则查找失败。



(二)时间复杂度

顺序查找平均关键字匹配次数为表长的一半,其时间复杂度为O(n)。

(三)顺序查找的优缺点

顺序查找的优点是对表无要求,插入数据可在O(1)内完成。

缺点是时间复杂度较大,数据规模较大时,效率较低。

(四)代码实现

1 C语言

#include <stdio.h>

int seq_search(int array[], int n, int key)
{
int i;
for(i = 0; i < n; i++)
{
if(key == array[i])
{
return i;   //查找成功
}
}
return -1;          //查找失败
}

int main()
{
int array[] = {3, 5, 2, 7, 6};
int num = 7;
int len = sizeof(array) / sizeof(int);
int index = seq_search(array, len, num);
if(-1 != index)
{
printf("%d的位置为%d\n", num, index);
}
else
{
printf("没有找到此元素");
}

return 0;
}


运行结果:

7的位置为3


2 C++函数模板

#include <iostream>
using namespace std;

#ifndef SEARCH_METHODS
#define SEARCH_METHODS

template<class T>
int SeqSearch(T list[], int len, T key)
{
for(int i = 0; i < len; i++)
{
if(key == list[i])
{
return i;
}
}

return -1;
}

#endif

int main()
{
int array[] = {3, 5, 2, 7, 6};
int num = 7;
int len = sizeof(array) / sizeof(int);
int index = SeqSearch(array, len, num);
if(-1 != index)
{
cout<< num << "的位置为" << index << endl;
}
else
{
cout << "没有找到此元素";
}

return 0;
}


3 Java

package com.z;

public class Search {

public static int SeqSearch(int[] array, int value){
for(int i = 0; i <= array.length-1; i++) {
if(value == array[i]) {
return i;
}
}

return -1;
}

public static void main(String[] args){
int[] a = new int[]{3,5,2,7,6};
int val = 7;
int index = SeqSearch(a, val);
if(-1 != index) {
System.out.println(val + "的位置为" + index);
} else {
System.out.println("没有找到此元素");
}
}
}


4 Python

def seq_search(a, value):
for i in range(len(a)):
if value == a[i]:
return i
return -1

arr = [3, 5, 2, 7, 6]
number = 7
index = seq_search(arr, number)
if -1 == index:
print "Number not exists"
else:
print "The index of the number is %d" % index

input("Press any key to exit")
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: