查找算法(一):顺序查找
2017-08-31 13:26
246 查看
查找-是最常见的数据操作之一,数据结构核心运算之一,其重要性不言而喻。顺序查找是人们最熟悉的查找策略,对于小规模的数据,顺序查找是个不错的选择。
1 从表中的第一个元素开始,依次与关键字比较。
2 若某个元素匹配关键字,则查找成功。
3 若查找到最后一个元素还未匹配关键字,则查找失败。
缺点是时间复杂度较大,数据规模较大时,效率较低。
运行结果:
2 C++函数模板
3 Java
4 Python
(一)基本思想
从数据的第一个元素开始,依次比较,直到找到目标数据或查找失败。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")
相关文章推荐
- 查找算法(顺序查找、二分法查找、二叉树查找、hash查找)
- 【查找算法】——顺序查找、折半查找、分块查找(索引查找)
- 查找算法(顺序查找、二分法查找、二叉树查找、hash查找)
- 索引顺序表查找算法(分块查找)
- 01_查找算法_顺序查找_二分查找
- 查找算法之顺序查找
- 【算法分析】查找算法:二分查找、顺序查找
- 【数据结构】查找算法:二分查找、顺序查找
- 查找算法-顺序查找、有序查找
- 三种静态查找算法:顺序、二分/折半、索引/分块查找
- 查找算法——顺序查找
- [转载]查找算法----顺序查找
- 查找算法总结一 顺序查找
- (3) 查找算法 --- 顺序查找 折半查找
- 【数据结构与算法之查找算法一】顺序查找
- 蛮力法在查找算法中的应用(JAVA)--顺序查找
- java查找算法_001顺序查找
- 十.用C语言实现查找算法 (1)顺序查找;(2)二分查找(折半查找);(3)二叉排序树;(4)哈希查找
- 查找算法(一)顺序查找
- 查找算法总结之顺序查找、二分查找、静态树查找