当前位置: 首页 > wzjs >正文

微信公众号微网站怎么做百度联系电话

微信公众号微网站怎么做,百度联系电话,怎么查找网站的根目录,博客网站的建设一、查找的基本概念 查找是指在一个给定的数据结构中找到满足特定条件的元素。常见的查找算法有基于线性表的查找、基于树的查找和基于哈希的查找等。 二、基于线性表的查找法 顺序查找法 顺序查找法是一种简单的查找方法,它从表的一端开始,依次将每个…

一、查找的基本概念

   查找是指在一个给定的数据结构中找到满足特定条件的元素。常见的查找算法有基于线性表的查找、基于树的查找和基于哈希的查找等。

二、基于线性表的查找法

顺序查找法

  顺序查找法是一种简单的查找方法,它从表的一端开始,依次将每个元素与目标值进行比较,直到找到目标值或遍历完整个表。

折半查找法

  折半查找法适用于有序表。它将查找区间一分为二,判断目标值在左半区间还是右半区间,然后在对应的区间继续查找,直到找到目标值或区间缩小为0。

分块查找法

   分块查找法将表分成若干块,每一块内元素不必有序,但各块之间必须有序。查找时,先确定目标值所在的块,再在块内进行查找

三、基于树的查找法

二叉排序树

   二叉排序树是一种动态查找表,它的结构在查找过程中动态变化。每个节点的左子树只包含小于该节点的元素,右子树只包含大于该节点的元素。

平衡二叉排序树

   平衡二叉排序树是在二叉排序树的基础上,通过旋转操作保持树的平衡,以保证查找效率。

B树

  B树是一种多路平衡查找树,它允许多个子节点。B树的每个节点可以存储多个键值,并且保持树的平衡。

四、计算式查找法——哈希法

哈希函数的构造方法

   哈希函数将关键字映射到哈希表的地址。常见的构造方法有直接定址法、数字分析法、平方取中法、折叠法、随机数法等。

处理冲突的方法

   当不同的关键字映射到同一个哈希地址时,就会产生冲突。常见的处理冲突的方法有开放定址法、链地址法等。

哈希表的查找过程

   哈希查找的过程包括构建哈希表和在哈希表中查找元素。查找时,通过哈希函数计算地址,然后在该地址处查找元素。

哈希法性能分析

   哈希查找的平均查找长度取决于哈希表的装填因子和处理冲突的方法。理想情况下,哈希查找的平均查找长度接近于1。

五、总结核心知识点

查找方法时间性能分析空间性能分析应用场景
顺序查找O(n)O(1)无序表的简单查找
折半查找O(log n)O(1)有序表的高效查找
分块查找O(√n)O(√n)有序分块表的查找
二叉排序树O(h)(h为树高)O(n)动态查找,需频繁插入和删除
平衡二叉树O(log n)O(n)需保持动态平衡的高效查找
B树O(log n)O(n)大规模数据的高效查找
哈希查找O(1)(理想情况)O(n)需快速查找的场景,允许一定冲突

六、代码实现

以下分别用 C 语言、C++、Java 和 Python 实现顺序查找、折半查找和哈希查找。

C 语言实现

#include <stdio.h>// 顺序查找
int SequentialSearch(int arr[], int n, int target) {for (int i = 0; i < n; i++) {if (arr[i] == target) { // 如果找到目标值return i; // 返回元素的索引}}return -1; // 未找到返回-1
}// 折半查找(要求数组有序)
int BinarySearch(int arr[], int n, int target) {int low = 0, high = n - 1;while (low <= high) {int mid = (low + high) / 2;if (arr[mid] == target) { // 如果找到目标值return mid; // 返回元素的索引} else if (arr[mid] < target) {low = mid + 1; // 在右半区间继续查找} else {high = mid - 1; // 在左半区间继续查找}}return -1; // 未找到返回-1
}// 哈希查找(简单示例)
#define HASHTABLE_SIZE 10
int HashTable[HASHTABLE_SIZE];// 哈希函数
int HashFunction(int key) {return key % HASHTABLE_SIZE;
}// 插入哈希表
void InsertHashTable(int key) {int address = HashFunction(key);HashTable[address] = key; // 插入元素
}// 在哈希表中查找
int SearchHashTable(int key) {int address = HashFunction(key);if (HashTable[address] == key) { // 如果找到目标值return address; // 返回元素的索引}return -1; // 未找到返回-1
}int main() {int arr[] = {1, 3, 5, 7, 9};int n = sizeof(arr) / sizeof(arr[0]);printf("顺序查找 5 的索引:%d\n", SequentialSearch(arr, n, 5));printf("折半查找 5 的索引:%d\n", BinarySearch(arr, n, 5));// 哈希查找示例InsertHashTable(5);InsertHashTable(15);printf("哈希查找 5 的索引:%d\n", SearchHashTable(5));printf("哈希查找 15 的索引:%d\n", SearchHashTable(15));return 0;
}

C++ 实现

​
#include <iostream>
#include <vector>
using namespace std;// 顺序查找
int SequentialSearch(vector<int> arr, int target) {for (int i = 0; i < arr.size(); i++) {if (arr[i] == target) { // 如果找到目标值return i; // 返回元素的索引}}return -1; // 未找到返回-1
}// 折半查找(要求数组有序)
int BinarySearch(vector<int> arr, int target) {int low = 0, high = arr.size() - 1;while (low <= high) {int mid = (low + high) / 2;if (arr[mid] == target) { // 如果找到目标值return mid; // 返回元素的索引} else if (arr[mid] < target) {low = mid + 1; // 在右半区间继续查找} else {high = mid - 1; // 在左半区间继续查找}}return -1; // 未找到返回-1
}// 哈希查找(简单示例)
const int HASHTABLE_SIZE = 10;
int HashTable[HASHTABLE_SIZE] = {0};// 哈希函数
int HashFunction(int key) {return key % HASHTABLE_SIZE;
}// 插入哈希表
void InsertHashTable(int key) {int address = HashFunction(key);HashTable[address] = key; // 插入元素
}// 在哈希表中查找
int SearchHashTable(int key) {int address = HashFunction(key);if (HashTable[address] == key) { // 如果找到目标值return address; // 返回元素的索引}return -1; // 未找到返回-1
}int main() {vector<int> arr = {1, 3, 5, 7, 9};cout << "顺序查找 5 的索引:" << SequentialSearch(arr, 5) << endl;cout << "折半查找 5 的索引:" << BinarySearch(arr, 5) << endl;// 哈希查找示例InsertHashTable(5);InsertHashTable(15);cout << "哈希查找 5 的索引:" << SearchHashTable(5) << endl;cout << "哈希查找 15 的索引:" << SearchHashTable(15) << endl;return 0;
}​

Java 实现

​
import java.util.Arrays;public class SearchExample {// 顺序查找public static int sequentialSearch(int[] arr, int target) {for (int i = 0; i < arr.length; i++) {if (arr[i] == target) { // 如果找到目标值return i; // 返回元素的索引}}return -1; // 未找到返回-1}// 折半查找(要求数组有序)public static int binarySearch(int[] arr, int target) {int low = 0, high = arr.length - 1;while (low <= high) {int mid = (low + high) / 2;if (arr[mid] == target) { // 如果找到目标值return mid; // 返回元素的索引} else if (arr[mid] < target) {low = mid + 1; // 在右半区间继续查找} else {high = mid - 1; // 在左半区间继续查找}}return -1; // 未找到返回-1}// 哈希查找(简单示例)private static final int HASHTABLE_SIZE = 10;private static int[] hashTable = new int[HASHTABLE_SIZE];// 哈希函数private static int hashFunction(int key) {return key % HASHTABLE_SIZE;}// 插入哈希表public static void insertHashTable(int key) {int address = hashFunction(key);hashTable[address] = key; // 插入元素}// 在哈希表中查找public static int searchHashTable(int key) {int address = hashFunction(key);if (hashTable[address] == key) { // 如果找到目标值return address; // 返回元素的索引}return -1; // 未找到返回-1}public static void main(String[] args) {int[] arr = {1, 3, 5, 7, 9};System.out.println("顺序查找 5 的索引:" + sequentialSearch(arr, 5));System.out.println("折半查找 5 的索引:" + binarySearch(arr, 5));// 哈希查找示例insertHashTable(5);insertHashTable(15);System.out.println("哈希查找 5 的索引:" + searchHashTable(5));System.out.println("哈希查找 15 的索引:" + searchHashTable(15));}
}​

Python 实现

​
# 顺序查找
def sequential_search(arr, target):for index, value in enumerate(arr):if value == target:  # 如果找到目标值return index  # 返回元素的索引return -1  # 未找到返回-1# 折半查找(要求数组有序)
def binary_search(arr, target):low, high = 0, len(arr) - 1while low <= high:mid = (low + high) // 2if arr[mid] == target:  # 如果找到目标值return mid  # 返回元素的索引elif arr[mid] < target:low = mid + 1  # 在右半区间继续查找else:high = mid - 1  # 在左半区间继续查找return -1  # 未找到返回-1# 哈希查找(简单示例)
HASHTABLE_SIZE = 10
hash_table = [None] * HASHTABLE_SIZE# 哈希函数
def hash_function(key):return key % HASHTABLE_SIZE# 插入哈希表
def insert_hash_table(key):address = hash_function(key)hash_table[address] = key  # 插入元素# 在哈希表中查找
def search_hash_table(key):address = hash_function(key)if hash_table[address] == key:  # 如果找到目标值return address  # 返回元素的索引return -1  # 未找到返回-1if __name__ == "__main__":arr = [1, 3, 5, 7, 9]print("顺序查找 5 的索引:", sequential_search(arr, 5))print("折半查找 5 的索引:", binary_search(arr, 5))# 哈希查找示例insert_hash_table(5)insert_hash_table(15)print("哈希查找 5 的索引:", search_hash_table(5))print("哈希查找 15 的索引:", search_hash_table(15))​

七、总结

   查找算法是数据结构中的重要部分,很重要哦!还有排序!不同的查找算法适用于不同的场景。通过本文的介绍,希望能帮助读者理解和掌握常见的查找算法,并能根据实际需求选择合适的查找方法。

http://www.dtcms.com/wzjs/500219.html

相关文章:

  • 毕设做网站是不是太low爱站网长尾词挖掘
  • 建立第一个网站廊坊seo排名
  • 台州网站建设咨询搜索最多的关键词的排名
  • wordpress备案号放置站群seo技巧
  • 二手书交易网站开发毕业设计百度seo优化网站
  • 武汉网站制作成功案例关键词搜索排名查询
  • 安徽工业大学两学一做网站网站推广怎样做
  • b2b电商平台网址网络优化师
  • 网页和网站做哪个好搜索引擎推广法
  • 有关网站建设的网站百度官方网站首页
  • 网站建设需要步骤怎么做网站广告
  • 关于建设网站的请示报告搜索引擎网站排名
  • wordpress 企业网站模板全网热搜榜第一名
  • 韩国美食做视频网站有哪些pc端网页设计公司
  • 网站建设先进个人典型材料免费行情网站
  • 合肥企业网站建设网站建设费用都选网络
  • wordpress 一键建站长沙百度公司
  • 手机微网站建设案例及报告今日国内新闻
  • 如何做公司的英文网站网站google搜索优化
  • 行政部建设公司网站百度推广教程视频教程
  • 商城网站开发那家好国内最新新闻事件今天
  • wordpress转程序什么是seo关键词优化
  • 一个人怎么做网站搜索引擎大全入口
  • 宁波做360网站推广百度竞价产品
  • 如何建自己网站seo排名优化首页
  • wordpress滑块轮播seo公司 上海
  • 蚌埠网站制作哪家好淘宝seo搜索优化工具
  • 网站开发后台结构永久免费不收费的污染app
  • 的网站制作浏阳廖主任打人
  • 找别人做公司网站第一步做什么百度图片识别在线使用