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

xiaoxiao2021-02-28  114

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

(一)基本思想

从数据的第一个元素开始,依次比较,直到找到目标数据或查找失败。 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")
转载请注明原文地址: https://www.6miu.com/read-33688.html

最新回复(0)