![](https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法实验
笔者在学习道路上写过的算法实验
Nonoas
对无知的感知是一种进步
展开
-
【数据结构】人名查询哈希表设计(链地址法)
哈希表使用「链地址法」解决地址冲突的方式,其数据结构就采用 数组+链表 ,数组的每一个元素都是一个链表节点,当地址冲突时,就往当前地址的链表末尾追加,这里可以把上一篇文章「 线性探测法 」稍作修改即可......原创 2022-07-03 15:09:11 · 1762 阅读 · 0 评论 -
【剑指offer】反转链表
思路逐个拆解链表,将链表逐个断开并指向其前一个元素;声明两个指针:pre 用于保存拆解过程中头结点之前的节点;next 用于保存用于保存拆解过程中头结点之后的节点;public class Solution { public ListNode ReverseList(ListNode head) { ListNode pre=null; ListNode next=null; while(head!=nul原创 2020-09-18 09:08:25 · 109 阅读 · 0 评论 -
插入排序(Java)
简介将一个记录插入到已排好序的序列中,从而得到一个新的有序序列(将序列的第一个数据看成是一个有序的子序列,然后从第二个记录逐个向该有序的子序列进行有序的插入,直至整个序列有序)代码package nono.sort;import java.util.Arrays;/** * 插入排序 * * @author Nonoas * */public class Inser...原创 2020-01-10 17:13:51 · 173 阅读 · 0 评论 -
【图解排序】堆排序(Java)
介绍堆排序:(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。在堆的数据结构中,堆中的最大值总是位于根节点(在优先队列中使用堆的话堆中的最小值位于根节点)。堆中定义以下几种操作:最大堆调整(Max Heapify):将堆的末端子节点作调整,使得子节点永远小于父节...原创 2020-01-09 16:40:12 · 248 阅读 · 0 评论 -
【图解排序】快速排序(Java)
快速排序(Java)唠叨一下:半夜实在睡不着,起床敲了一个快速排序的代码,讲真这是大学第一次亲手敲出这个代码,代码使用Java实现,但算法和数据结构一样,其本身和编程语言是没有关系的。简单介绍算法思想:基于分治的思想,是 冒泡排序 的改进型。1.首先在数组中选择一个基准点(该基准点的选取可能影响快速排序的效率,后面讲解选取的方法);2.然后分别从数组的两端扫描数组,设两个指示标志(...原创 2020-01-09 03:28:09 · 337 阅读 · 0 评论 -
【数据结构】人名查询哈希表设计(线性探测法)
问题描述针对某个集体中人名设计一个哈希表,使得平均查找长度不超过R,并完成相应的建表和查表程序。基本要求假设人名为中国人姓名的汉语拼音形式。待填入哈希表的人名共有30个,取平均查找长度的上限为2。哈希函数用除留余数法构造,用线性探测再散列法或链地址法处理冲突。...............原创 2020-01-08 15:56:57 · 15300 阅读 · 14 评论 -
减治法在组合问题中的应用 ——8枚硬币问题
实验题目在8枚外观相同的硬币中,有一枚是假币,并且已知假币与真币的重量不同,但不知道假币与真币相比较轻还是较重。可以通过一架天平来任意比较两组硬币,设计一个高效的算法来检测这枚假币。实验要求1)设计减治算法实现8枚硬币问题;2)设计实验程序,考察用减治技术设计的算法是否高效;3)扩展算法,使之能处理n枚硬币中有一枚假币的问题。实现提示假设用一个数组B[n]表示硬币,元素B[i]中存放...原创 2020-01-04 22:30:11 · 1792 阅读 · 0 评论