数据结构哈希表例题_数据结构哈希算法

数据结构哈希表例题_数据结构哈希算法各类介绍:各类实战代码如下:(包括五种,自己可以逐个测试)#include “pch.h”#include <iostream>using namespace std;//折半查找int BinarySearchFunc(int key, int a[], int n){ int low, mid, high; //查找标记 int count …

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

各类介绍:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

各类实战

代码如下:
(包括五种,自己可以逐个测试)

#include "pch.h"
#include <iostream>
using namespace std;

//折半查找

int BinarySearchFunc(int key, int a[], int n)
{ 
   
	int low, mid, high;		//查找标记
	int count = 0;			//统计查找次数
	low = 0;
	high = n - 1;
	int countT = 0;

	while (low <= high)
	{ 
   
		count++;
		mid = (high + low) / 2;

		if (key == a[mid])
		{ 
   
			cout << "查找成功,位置查找次数为:" << count << "对应的位置是:a[" << mid << "]" << endl;
			countT++;
			break;
		}
		else if (key < a[mid])	//查找数据是在low-mid之间
		{ 
   
			high = mid - 1;
		}
		else if (key > a[mid])	//查找数据是在mid-high之间
		{ 
   
			low = mid + 1;
		}

	}
	if (countT == 0)
	{ 
   
		cout << "查找key失败!" << endl;
	}
	return 0;
}

int main()
{ 
   
	cout << "折半查找:" << endl;
	int key;
	int array[10] = { 
    1,2,13,34,45,56,78,79,88,92 };
	cout << "请输入要查找的数据:";
	cin >> key;
	BinarySearchFunc(key, array, 10);

	return 0;
}


哈希表

//#define N 11
//#define L 13
//
//int Data[N] = { 10,23,33,26,56,11,88,56,66,22,74 }; //原始表
//int Hash[L] = { 0 }; //哈希表
//
//创建使用哈希表
//void CreateHash()
//{ 
   
// for (int i = 0; i < N; i++)
// { 
   
// int j=Data[i] % L; //计算哈希地址
// while (Hash[j])
// { 
   
// j = (++j) % L;
// }
// Hash[j] = Data[i];
// }
//}
//
//查找哈希表里的数据
//int HashSearch(int key)
//{ 
   
// int i = key % L; //计算哈希地址
// while (Hash[i]&&Hash[i]!=key) //不是我要查找的值
// { 
   
// i = (++i) % L; //更换哈希地址
// }
// if (Hash[i]==0) //找到开放空间的时候,查找失败
// { 
   
// return -1; //查找失败
// }
// else
// { 
   
// return i;
// }
//}
//
//int main()
//{ 
   
// int key;
// CreateHash();
// cout << "哈希表中的值为:" << endl;
// for (int i = 0; i < L; i++)
// { 
   
// cout << Hash[i] << " ";
// }
// cout << endl;
//
// cout << "请输入所要查找的值:";
// cin >> key;
// int IP=HashSearch(key);
// if (IP==-1)
// { 
   
// cout << "查找失败!" << endl;
// }
// else
// { 
   
// cout << "查找成功!所对应的下标为:" << IP << endl;
// }
//
// return 0;
//}

//直接插入排序

//int DirInsertSortFunc(int arraa[], int length)
//{ 
   
// int j;
// for (int i = 2; i <=length; i++)
// { 
   
// arraa[0] = arraa[i];//给监视哨赋值,a【0】用来做比较
// j = i - 1; //确定要比较的元素
// while (arraa[0]<arraa[j])
// { 
   
// arraa[j + 1] = arraa[j];//数据右移
// j--; //下标前移
// }
// arraa[j + 1] = arraa[0]; //在确定位置插入arraa[i]
// }
// return 0;
//}
//
//
//int main()
//{ 
   
//
// cout << "插入排序:"<<endl;
// int arry[6] = { 0,12,33,66,55,22 };
// DirInsertSortFunc(arry, 5);
// cout << "插入排序后的结果为:";
// for (int i = 1; i <= 5; i++)
// { 
   
// cout << arry[i] << " ";
// }
// cout << endl;
// return 0;
//}

//冒泡排序

//void Func(int a[])
//{ 
   
// int temp;
// for (int i = 1; i < 5; i++)
// { 
   
// for (int j = 0; j < 5-i; j++)
// { 
   
// if (a[j]>a[j+1])
// { 
   
// temp = a[j];
// a[j] = a[j + 1];
// a[j + 1] = temp;
// }
// }
// }
//}
//
//int main()
//{ 
   
// cout << "冒泡排序:" << endl;
// int a[5] = { 1,55,64,99,23 };
//
// Func(a);
// cout << "冒泡排序的结果为:";
// for (int i = 0; i < 5; i++)
// { 
   
// cout << a[i] << " ";
// }
// cout << endl;
//
// return 0;
//}

//快速排序

//int QsortFunc(int a[], int start, int end)
//{ 
   
// int i, j;
// i = start; //每组首个元素给i
// j = end; //每组末尾元素给j
// a[0] = a[start]; //设置基准值
//
// while (i<j)
// { 
   
// //基准值左边
// while (i<j&&a[0]<a[j])
// { 
   
// j--; //位置左移
// }
// if (i<j)
// { 
   
// a[i] = a[j];
// i++; //位置右移
// }
// //基准值右边
// while (i < j&&a[i] <= a[0])
// { 
   
// i++; //位置左移
// }
// if (i < j)
// { 
   
// a[j] = a[i];
// j--; //位置右移
// }
// }
// a[i] = a[0]; //将基准值放入指定位置
// if (start<i)
// { 
   
// QsortFunc(a, start, j - 1);
// }
// if (i < end)
// { 
   
// QsortFunc(a, j + 1, end);
// }
// return 0;
//}
//
//int main()
//{ 
   
// cout << "快速排序:" << endl;;
// int a[11] = { 0,66,6,666,332,12,87,45,12,45,6 };
//
// QsortFunc(a, 1, 10);
// cout << "快速排序的结果为:";
// for (int i = 1; i <=10; i++)
// { 
   
// cout << a[i] << " ";
// }
// return 0;
//}

五种结果分别为:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170983.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • (20211130更新)关于jupyter notebook的下载安装及自己的配置、主题

    什么是jupyternotebook?JupyterNotebook是基于网页的用于交互计算的应用程序。其可被应用于全过程计算:开发、文档编写、运行代码和展示结果。打开的好慢。。没事,我们就不讲官网的了。JupyterNotebook以命令行启动后,以网页的形式打开,我们可以在网页页面中直接编写代码和运行代码,运行代码块后,运行结果会直接在代码块下显示。比如这样:当然我们在编程过程中会习惯的编写注释,可在同一个页面中直接编写。安装由于时间关系,我就先讲解一下本人的安装及使用,关于

    2022年4月13日
    48
  • java 将字符串转List

    java 将字符串转ListList<String>picUrlList=Arrays.asList(picUrls.split(“,”)).stream().map(s->(s.trim())).map(s->(ApiUrlConstant.HOST_URL+s)).collect(Collectors.toList());

    2022年5月15日
    101
  • local port是什么意思_tracert命令的用法

    local port是什么意思_tracert命令的用法使用talnet[ip][port]命令,在命令窗口下,让输入的字符回显。 1、cmd进入命令窗口。2、telnet127.0.0.19769连接。3、同时按下Ctrl+]4、输入setLOCALECHO5、再按回车。6、再输入字符,就可以看到了。 …

    2022年9月24日
    1
  • 数组去重的5种方法[通俗易懂]

    数组去重的5种方法[通俗易懂]双重for循环去重 原理两两比较如果相等的话就删除第二个 例如:11132124 先让第一个1即arr[0]与后面的一个个比较如果后面的值等于arr[0]删除后面的值 第一次结束后的结果是13224删除了后面所有的1 同理第二次第三会删除与自己相同的元素详细介绍看代码注释1 2functionnoRepeat1(arr){…

    2022年6月22日
    46
  • Java 中的三大特性(超详细篇)

    Java 中的三大特性(超详细篇)简介Java的三大特性:封装、继承、多态乍一听,好像很高大上,其实当你真正用的时候,会发现高大上的还在后面呢。。。热身在正式讲解三大特性之前,先普及几个知识1.访问权限修饰符Java中关于访问权限的四个修饰符,表格如下 private friendly(默认) protected public 当前类访问权限 √ √ √ √ 包访问权限 × √ √ √ 子类访问权限 × × √

    2022年7月7日
    23
  • 做饭给自己一人吃,如何最快速,且营养有保证?

    做饭给自己一人吃,如何最快速,且营养有保证?二六 ,又土又木的设计师792 人赞同作为一个长期一个人的单身狗,这个我非常有经验啊。下面介绍一下我这三四年独居生活总结下来的经验。1.周末在家多屯点儿菜放冰箱,按照每顿饭一荤一素一个汤的组合,大致估摸着买菜。肉类肯定是要一些的,肉买多了不要紧可以速冻放的久些。蔬菜就不能买多了,绿叶的尤其不能多,因为它两三天就蔫了。所以以两天内的绿叶菜再搭上一天的瓜类豆类蔬菜为宜。2.

    2022年7月15日
    13

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号