数据结构与算法之顺序搜索算法
顺序搜索,也称线性搜索,是一种简单的搜索算法,从数据结构的第一个元素开始,依次比较每个元素,直到找到所需的元素,或者遍历完整个数据结构。
顺序搜索算法的实现步骤如下:
- 从数据结构的第一个元素开始进行比较;
- 如果找到所需的元素,返回元素所在的位置;
- 如果遍历完整个数据结构都没有找到所需的元素,则返回搜索失败的结果。
顺序搜索算法的时间复杂度为O(n),其中n为数据结构中元素的数量。由于该算法需要比较每个元素,因此其速度较慢。在大规模数据搜索中,顺序搜索不是一种优秀的选择,但对于小型数据结构或已有序的数据结构,顺序搜索仍然是一种简单可靠的算法。
一、C 实现顺序搜索算法及代码详解
顺序搜索(Sequential Search),也称线性搜索(Linear Search),是一种简单的搜索算法,它的基本思想是从数据结构的起始位置开始,顺序比较每一个元素,直到找到目标元素或搜索到数据结构的末尾。
下面是 C 语言实现顺序搜索的代码:
#include <stdio.h>
int sequential_search(int *arr, int n, int x)
{
for (int i = 0; i < n; i++) {
if (arr[i] == x) {
return i;
}
}
return -1;
}
int main()
{
int arr[] = {2, 7, 11, 15, 23, 37, 41, 47, 53, 67};
int n = sizeof(arr) / sizeof(int);
int x = 23;
int pos;
pos = sequential_search(arr, n, x);
if (pos != -1) {
printf("The position of %d is %d.\n", x, pos);
} else {
printf("%d not found.\n", x);
}
return 0;
}
代码说明:
sequential_search
函数接收三个参数,分别是待搜索的数组arr
、数组长度n
和目标元素x
。- 在
sequential_search
函数中,使用for
循环遍历数组,顺序比较每个元素是否等于目标元素x
。 - 如果找到目标元素,返回它在数组中的位置。否则返回 -1,表示没找到目标元素。
main
函数中,定义一个待搜索数组,以及目标元素x
和搜索结果变量pos
。- 调用
sequential_search
函数,将搜索结果保存到pos
变量中。 - 根据搜索结果,输出对应的信息。
以上就是 C 实现顺序搜索算法的示例代码。
二、C++ 实现顺序搜索算法及代码详解
顺序搜索算法(Sequential Search Algorithm),也叫线性搜索算法,是一种简单直观的查找方法。它逐个扫描列表中的元素,直到找到匹配的目标元素为止,或者扫描到列表末尾仍未找到目标元素。
顺序搜索算法的时间复杂度为 O(n),其中 n 为列表长度。虽然它的时间复杂度较高,但它的实现简单,适用于小型列表的查找。
以下是 C++ 实现顺序搜索算法的代码:
#include <iostream>
#include <vector>
using namespace std;
//顺序搜索算法
int sequentialSearch(vector<int>& arr, int target){
int n = arr.size();
for(int i = 0; i < n; i++){
if(arr[i] == target){
return i; //返回目标元素的下标
}
}
return -1; //未找到目标元素
}
int main(){
vector<int> arr = {1, 4, 2, 6, 7, 3, 9, 5, 8};
int target = 6;
int index = sequentialSearch(arr, target);
if(index != -1){
cout << "目标元素 " << target << " 的下标为 " << index << endl;
} else {
cout << "未找到目标元素 " << target << endl;
}
return 0;
}
该代码定义了一个 sequentialSearch
函数,它接收一个整型向量 arr
和一个目标元素 target
,并返回目标元素在向量中的下标。如果未找到目标元素,则返回 -1。
在主函数中,定义了一个整型向量 arr
,它包含了一些待查找的元素。在这个示例中,我们想查找元素 6 的下标。通过调用 sequentialSearch
函数,将目标元素和整型向量作为参数传递,并获得返回的下标值。
最后,根据返回的下标值判断是否找到了目标元素,并输出相应的结果。
运行上述代码,输出结果为:
目标元素 6 的下标为 3
可以看到,顺序搜索算法成功地找到了目标元素,并返回了它在向量中的下标。顺序搜索算法(Sequential Search Algorithm),也叫线性搜索算法,是一种简单直观的查找方法。它逐个扫描列表中的元素,直到找到匹配的目标元素为止,或者扫描到列表末尾仍未找到目标元素。
顺序搜索算法的时间复杂度为 O(n),其中 n 为列表长度。虽然它的时间复杂度较高,但它的实现简单,适用于小型列表的查找。
以下是 C++ 实现顺序搜索算法的代码:
#include <iostream>
#include <vector>
using namespace std;
//顺序搜索算法
int sequentialSearch(vector<int>& arr, int target){
int n = arr.size();
for(int i = 0; i < n; i++){
if(arr[i] == target){
return i; //返回目标元素的下标
}
}
return -1; //未找到目标元素
}
int main(){
vector<int> arr = {1, 4, 2, 6, 7, 3, 9, 5, 8};
int target = 6;
int index = sequentialSearch(arr, target);
if(index != -1){
cout << "目标元素 " << target << " 的下标为 " << index << endl;
} else {
cout << "未找到目标元素 " << target << endl;
}
return 0;
}
该代码定义了一个 sequentialSearch
函数,它接收一个整型向量 arr
和一个目标元素 target
,并返回目标元素在向量中的下标。如果未找到目标元素,则返回 -1。
在主函数中,定义了一个整型向量 arr
,它包含了一些待查找的元素。在这个示例中,我们想查找元素 6 的下标。通过调用 sequentialSearch
函数,将目标元素和整型向量作为参数传递,并获得返回的下标值。
最后,根据返回的下标值判断是否找到了目标元素,并输出相应的结果。
运行上述代码,输出结果为:
目标元素 6 的下标为 3
可以看到,顺序搜索算法成功地找到了目标元素,并返回了它在向量中的下标。顺序搜索算法(Sequential Search Algorithm),也叫线性搜索算法,是一种简单直观的查找方法。它逐个扫描列表中的元素,直到找到匹配的目标元素为止,或者扫描到列表末尾仍未找到目标元素。
顺序搜索算法的时间复杂度为 O(n),其中 n 为列表长度。虽然它的时间复杂度较高,但它的实现简单,适用于小型列表的查找。
以下是 C++ 实现顺序搜索算法的代码:
#include <iostream>
#include <vector>
using namespace std;
//顺序搜索算法
int sequentialSearch(vector<int>& arr, int target){
int n = arr.size();
for(int i = 0; i < n; i++){
if(arr[i] == target){
return i; //返回目标元素的下标
}
}
return -1; //未找到目标元素
}
int main(){
vector<int> arr = {1, 4, 2, 6, 7, 3, 9, 5, 8};
int target = 6;
int index = sequentialSearch(arr, target);
if(index != -1){
cout << "目标元素 " << target << " 的下标为 " << index << endl;
} else {
cout << "未找到目标元素 " << target << endl;
}
return 0;
}
该代码定义了一个 sequentialSearch
函数,它接收一个整型向量 arr
和一个目标元素 target
,并返回目标元素在向量中的下标。如果未找到目标元素,则返回 -1。
在主函数中,定义了一个整型向量 arr
,它包含了一些待查找的元素。在这个示例中,我们想查找元素 6 的下标。通过调用 sequentialSearch
函数,将目标元素和整型向量作为参数传递,并获得返回的下标值。
最后,根据返回的下标值判断是否找到了目标元素,并输出相应的结果。
运行上述代码,输出结果为:
目标元素 6 的下标为 3
可以看到,顺序搜索算法成功地找到了目标元素,并返回了它在向量中的下标。
三、Java 实现顺序搜索算法及代码详解
顺序搜索算法(也称为线性搜索)是一种简单的搜索算法,它按照顺序逐一比较列表中的每个元素,直到找到所需的元素或搜索完整个列表为止。它的时间复杂度为O(n),其中n为列表中元素的数量。
以下是用Java实现顺序搜索算法的代码和详细解释:
public class SequentialSearch {
public static int search(int[] arr, int target) {
// 循环遍历数组中的每个元素
for (int i = 0; i < arr.length; i++) {
// 如果当前元素与目标相等,则返回此索引
if (arr[i] == target) {
return i;
}
}
// 如果遍历完成后仍未找到目标,则返回-1
return -1;
}
public static void main(String[] args) {
// 演示用例
int[] arr = {7, 3, 9, 2, 5, 1, 8};
int target = 5;
int index = search(arr, target);
if (index == -1) {
System.out.println("未找到目标");
} else {
System.out.println("目标在数组中的索引为:" + index);
}
}
}
在以上代码中,我们使用了一个静态方法search
来实现顺序搜索算法。它接受两个参数:一个整数数组和一个目标整数,返回目标整数在数组中的索引。如果目标整数不在数组中,则返回-1。
在方法中,我们使用一个for
循环来遍历整个数组中的元素。对于每个元素,我们检查它是否与目标整数相等。如果是,则返回此索引。如果循环完成后仍未找到目标,则返回-1。
在main
方法中,我们演示了如何使用search
方法来搜索一个整数数组中的目标整数。我们创建一个包含一些整数的数组,并指定目标整数为5。然后我们调用search
方法并将结果打印到控制台上。
这就是顺序搜索算法的Java实现及代码详解。顺序搜索算法(也称为线性搜索)是一种简单的搜索算法,它按照顺序逐一比较列表中的每个元素,直到找到所需的元素或搜索完整个列表为止。它的时间复杂度为O(n),其中n为列表中元素的数量。
以下是用Java实现顺序搜索算法的代码和详细解释:
public class SequentialSearch {
public static int search(int[] arr, int target) {
// 循环遍历数组中的每个元素
for (int i = 0; i < arr.length; i++) {
// 如果当前元素与目标相等,则返回此索引
if (arr[i] == target) {
return i;
}
}
// 如果遍历完成后仍未找到目标,则返回-1
return -1;
}
public static void main(String[] args) {
// 演示用例
int[] arr = {7, 3, 9, 2, 5, 1, 8};
int target = 5;
int index = search(arr, target);
if (index == -1) {
System.out.println("未找到目标");
} else {
System.out.println("目标在数组中的索引为:" + index);
}
}
}
在以上代码中,我们使用了一个静态方法search
来实现顺序搜索算法。它接受两个参数:一个整数数组和一个目标整数,返回目标整数在数组中的索引。如果目标整数不在数组中,则返回-1。
在方法中,我们使用一个for
循环来遍历整个数组中的元素。对于每个元素,我们检查它是否与目标整数相等。如果是,则返回此索引。如果循环完成后仍未找到目标,则返回-1。
在main
方法中,我们演示了如何使用search
方法来搜索一个整数数组中的目标整数。我们创建一个包含一些整数的数组,并指定目标整数为5。然后我们调用search
方法并将结果打印到控制台上。
这就是顺序搜索算法的Java实现及代码详解。顺序搜索算法(也称为线性搜索)是一种简单的搜索算法,它按照顺序逐一比较列表中的每个元素,直到找到所需的元素或搜索完整个列表为止。它的时间复杂度为O(n),其中n为列表中元素的数量。
以下是用Java实现顺序搜索算法的代码和详细解释:
public class SequentialSearch {
public static int search(int[] arr, int target) {
// 循环遍历数组中的每个元素
for (int i = 0; i < arr.length; i++) {
// 如果当前元素与目标相等,则返回此索引
if (arr[i] == target) {
return i;
}
}
// 如果遍历完成后仍未找到目标,则返回-1
return -1;
}
public static void main(String[] args) {
// 演示用例
int[] arr = {7, 3, 9, 2, 5, 1, 8};
int target = 5;
int index = search(arr, target);
if (index == -1) {
System.out.println("未找到目标");
} else {
System.out.println("目标在数组中的索引为:" + index);
}
}
}
在以上代码中,我们使用了一个静态方法search
来实现顺序搜索算法。它接受两个参数:一个整数数组和一个目标整数,返回目标整数在数组中的索引。如果目标整数不在数组中,则返回-1。
在方法中,我们使用一个for
循环来遍历整个数组中的元素。对于每个元素,我们检查它是否与目标整数相等。如果是,则返回此索引。如果循环完成后仍未找到目标,则返回-1。
在main
方法中,我们演示了如何使用search
方法来搜索一个整数数组中的目标整数。我们创建一个包含一些整数的数组,并指定目标整数为5。然后我们调用search
方法并将结果打印到控制台上。
这就是顺序搜索算法的Java实现及代码详解。