顺序查找
顺序查找
介绍
顺序查找(Sequential Search),又称线性查找,是一种简单的查找算法,主要用于在未排序的数据集合中查找指定的元素。顺序查找的基本思想是从数据集合的第一个元素开始逐个扫描,直到找到目标元素或扫描完整个数据集合为止。
具体实现时,从数据集合的第一个元素开始,逐个比较每个元素与目标元素是否相等。如果找到目标元素,则返回该元素的索引;如果遍历完整个数据集合都没有找到目标元素,则返回一个特殊值(例如-1)表示未找到。顺序查找的时间复杂度为O(n),其中n为数据集合的大小,因此在大规模数据集合中效率较低,但对于小规模数据集合而言,顺序查找是一种简单有效的查找算法。
顺序查找适用于数据集合规模较小的情况,或者数据集合本身已经有序,但需要进行少量的查找操作。在实际应用中,顺序查找常用于数据集合中元素的删除、插入等操作,因为需要先查找元素是否存在。如果数据集合已经有序,可以考虑使用更高效的二分查找算法。
代码
public class SequentialSearch {
public static int sequentialSearch(int[] arr, int target) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] == target) {
return i; // 返回目标元素的索引
}
}
return -1; // 目标元素不存在于数组中
}
public static void main(String[] args) {
int[] arr = {5, 8, 2, 10, 3};
int target = 2;
int index = sequentialSearch(arr, target);
if (index != -1) {
System.out.println("目标元素 " + target + " 在数组中的索引位置为: " + index);
} else {
System.out.println("目标元素 " + target + " 不存在于数组中");
}
}
}
function sequentialSearch(arr, target) {
for (let i = 0; i < arr.length; i++) {
if (arr[i] === target) {
return i; // 返回目标元素的索引
}
}
return -1; // 目标元素不存在于数组中
}
const arr = [5, 8, 2, 10, 3];
const target = 2;
const index = sequentialSearch(arr, target);
if (index !== -1) {
console.log(`目标元素 ${target} 在数组中的索引位置为: ${index}`);
} else {
console.log(`目标元素 ${target} 不存在于数组中`);
}
def sequential_search(lst, target):
for i in range(len(lst)):
if lst[i] == target:
return i # 返回目标元素的索引
return -1 # 目标元素不存在于列表中
lst = [5, 8, 2, 10, 3]
target = 2
index = sequential_search(lst, target)
if index != -1:
print(f"目标元素 {target} 在列表中的索引位置为: {index}")
else:
print(f"目标元素 {target} 不存在于列表中")
package main
import "fmt"
func sequentialSearch(slice []int, target int) int {
for i, num := range slice {
if num == target {
return i // 返回目标元素的索引
}
}
return -1 // 目标元素不存在于切片中
}
func main() {
slice := []int{5, 8, 2, 10, 3}
target := 2
index := sequentialSearch(slice, target)
if index != -1 {
fmt.Printf("目标元素 %d 在切片中的索引位置为: %d\n", target, index)
} else {
fmt.Printf("目标元素 %d 不存在于切片中\n", target)
}
}
#include <stdio.h>
int sequentialSearch(int arr[], int size, int target) {
for (int i = 0; i < size; i++) {
if (arr[i] == target) {
return i; // 返回目标元素的索引
}
}
return -1; // 目标元素不存在于数组中
}
int main() {
int arr[] = {5, 8, 2, 10, 3};
int size = sizeof(arr) / sizeof(arr[0]);
int target = 2;
int index = sequentialSearch(arr, size, target);
if (index != -1) {
printf("目标元素 %d 在数组中的索引位置为: %d\n", target, index);
} else {
printf("目标元素 %d 不存在于数组中\n", target);
}
return 0;
}
#include <iostream>
using namespace std;
int sequentialSearch(int arr[], int size, int target) {
for (int i = 0; i < size; i++) {
if (arr[i] == target) {
return i; // 返回目标元素的索引
}
}
return -1; // 目标元素不存在于数组中
}
int main() {
int arr[] = {5, 8, 2, 10, 3};
int size = sizeof(arr) / sizeof(arr[0]);
int target = 2;
int index = sequentialSearch(arr, size, target);
if (index != -1) {
cout << "目标元素 " << target << " 在数组中的索引位置为: " << index << endl;
} else {
cout << "目标元素 " << target << " 不存在于数组中" << endl;
}
return 0;
}
<?php
function sequentialSearch($arr, $target) {
$length = count($arr);
for ($i = 0; $i < $length; $i++) {
if ($arr[$i] === $target) {
return $i; // 返回目标元素的索引
}
}
return -1; // 目标元素不存在于数组中
}
$arr = [5, 8, 2, 10, 3];
$target = 2;
$index = sequentialSearch($arr, $target);
if ($index !== -1) {
echo "目标元素 $target 在数组中的索引位置为: $index";
} else {
echo "目标元素 $target 不存在于数组中";
}
?>