当前位置: 首页 > 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/520492.html

相关文章:

  • 网站建设需要企业国内疫情最新情况
  • 学做网站平台西安做seo的公司
  • 做网站是用源码还是模版优化搜索曝光次数的方法
  • 上海网站建设的seo服务的内容
  • 做网站的一些好处百度推广公司电话
  • 网站建设怎么收费北京网站制作设计
  • 淘宝京东拼多多购物券网站怎么做企业网站代运营
  • net网站开发做手工简笔西安专业网络推广平台
  • 太原做网络推广如何提升网站seo排名
  • js做示爱网站例子百度新闻官网
  • 网站地图怎么上传今天nba新闻最新消息
  • 如何做好一个外贸进网站的编辑江西百度推广开户多少钱
  • 民政局两学一做专题网站b2b网站大全免费推广
  • 在线平台教育网站开发泰安seo网络公司
  • wordpress做微信推广seo排名是什么意思
  • 北京怎样做企业网站山东疫情最新消息
  • 关于做网站网购平台推广方案
  • 企业网站 空间重庆seo建站
  • 网站工具查询品牌传播策略
  • 移动互联网应用程序指的是什么优化关键词技巧
  • 南通企业网站宁波seo网络推广产品服务
  • wordpress图片编辑百度seo是啥
  • 网站建设分配人员方案百度快照查询入口
  • 做外贸网站费用病毒式营销
  • 网站设计是做什么的公司网站的推广
  • 怎么修改wordpress 后台登陆密码推荐一个seo优化软件
  • photoshop怎么做网站草图app优化推广
  • dw个人网站设计模板免费百度竞价排名收费
  • 深圳网站快速备案广西seo公司
  • VIP视频自助网站建设企业seo推广