数据结构及算法
文章平均质量分 66
数据结构及算法
`送你一朵小红花
这个作者很懒,什么都没留下…
展开
-
JAVA算法:哈希查找
哈希查找(Hash Search)概念:哈希法:又称散列法、杂凑法或关键字地址计算法等,相应的表称为哈希表。哈希表的装填因子α: α = 哈希表中元素个数 / 哈希表的长度α可描述哈希表的装满程度。显然,α越小,发生冲突的可能性越小,而α越大,发生冲突的可能性也越大。基本思想:首先在元素的关键字k和元素的存储位置p之间建立一个对应关系H,使得p=H(k),H称为哈希函数。除留余数法:假设哈希表长为m, p为小于等于m的最大素数, 则哈希函数为 H(k)=k%p,其中%为模p取余运算。处理冲原创 2021-05-12 17:05:12 · 1302 阅读 · 0 评论 -
JAVA算法:二分查找
二分查找(Binary Search)简介:二分查找也称折半查找,它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。二分查找充分利用了元素间的次序关系,采用分冶策略,可在最坏的情况下用O(logn)完成搜索任务。原理:1. 如果待查序列为空,那么就返回-1,并退出算法;这表示查找不到目标元素。 2. 如果待查询序列不为空,则将它的中间元素与查找的目标元素进行匹配,看它们是否相等。 3. 如果相等,则返回该中间元素的索引,并退出算法;此时原创 2021-05-10 17:53:21 · 249 阅读 · 0 评论 -
JAVA算法:快速排序
快速排序(Quick Sort)简介:快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法。快速排序的基本思想是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序为非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排原创 2021-04-29 14:44:43 · 178 阅读 · 0 评论 -
JAVA算法:插入排序
插入排序(Insertion Sort)简介:插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动。插入排序为非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序原创 2020-12-11 16:31:49 · 190 阅读 · 0 评论 -
JAVA算法:选择排序
选择排序(Selection sort)简介:选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。选择排序法的第一层循环从起始元素开始选到倒数第二个元素,主要是在每次进入的第二层循环之前,将外层循环的下标赋值给临时变量,接下来的第二层循环中,如果发现有比这个最小位置处的元素更小的元素,则将那个更小的元素的下标赋给临时变量,最后,在二层循环退出后,如果临时变量改变,则说明,有比当前外层循环位原创 2020-12-11 14:40:58 · 287 阅读 · 0 评论 -
JAVA算法:冒泡排序
JAVA排序之冒泡排序冒泡排序(Bubble Sort)简介:冒泡排序是一种简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列)故名“冒泡排序”。冒泡排序为非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。原理:1.比较相邻原创 2020-12-09 15:25:38 · 203 阅读 · 0 评论