数据结构与算法
Skuld66
这个作者很懒,什么都没留下…
展开
-
sizeCtl含义
sizeCtl为0,代表数组未初始化,且数组的初始容量为16sizeCtl为正数,如果数组未初始化,纪录数组的初始容量,如果已初始化,纪录的是数组的扩容阈值sizeCtl为-1表示正在进行初始化sizeCtl小于0但不是-1表示数组正在扩容,-(1+n)表示有n个线程正在共同完成扩容操作。...原创 2021-08-08 17:26:46 · 979 阅读 · 0 评论 -
hash算法的要求
1、从hash值不可以反向推导出原始的数据2、输入数据的微小变化会得到完全不同的hash值,相同的数据会得到相同的值。3、执行效率要高效,长的文本也能快速计算出hash值。4、hash算法的冲突概率要小...原创 2021-08-07 10:46:25 · 469 阅读 · 0 评论 -
arraylist和linkedlist区别
arraylist和linkedlist区别1、数据结构组成:arraylist底层是数组,linkedlist底层是双向链表2、对于随机访问,ArrayList优于LinkedList,ArrayList可以根据下标以O(1)时间复杂度对元素进行随机访问。而LinkedList的每一个元素都依靠地址指针和它后一个元素连接在一起,在这种情况下,查找某个元素的时间复杂度是O(n)3、对于插入和删除操作,LinkedList优于ArrayList,因为当元素被添加到LinkedList任意位置的时候,ar原创 2021-08-07 10:41:09 · 155 阅读 · 0 评论 -
java实现快速排序
java快速排序从待排序序列中选择一个数,排序完成后左边的数全比他小,右边的数全比他大。比如选择序列为[4,5,3,6,2,5,1],选择最左边的数4,选择左边的数要从最右边开始比较,1小于4,把1放到4的位置。左指针开始比较,左指针初始位于4的位置,但此时此位置上的数是1,1和4比较,小于4,不动,指针增加指到5,5大于4,,把5放到右指针的位置即原来1的位置。之后右指针开始比较。这样交替比较直到左右指针相遇。一次快排后结果为[1 2 3 4 6 5 5]然后再对4左右的数据序列快排publi原创 2020-07-31 16:23:19 · 74 阅读 · 0 评论 -
归并排序
java归并排序1、算法思想:归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分:问题分成一些小的问题然后递归求解,治:的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。将序列递归拆半分成多个子序列,再将各个子序列排序后归并叠加,最后归并所有子序列,排序完成。2、算法过程举个栗子(第一趟的排序过程)原始序列:49、38、65、97、76、13、271)将原始序列看成7个只含一个元素的子序列,此时序列都是有序转载 2020-07-31 11:30:40 · 129 阅读 · 0 评论 -
希尔排序
java希尔排序1、算法思想:希尔算法又名缩小增量排序,本质是插入排序,只不过是将待排序的序列按某种规则分成几个子序列,分别对几个子序列进行直接插入排序。这个规则就是增量,增量选取很重要,增量一般选序列长度一半,然后逐半递减,直到最后一个增量为1,为1相当于直接插入排序。2、算法过程举个栗子(第一趟的排序过程)原始序列:49、38、65、97、76、13、27、49,55、041)序列长度为10,所以第一次分割增量len=5,进行分割序列,得到5个子序列子序列1:49转载 2020-07-30 22:37:46 · 239 阅读 · 0 评论 -
插入排序
java插入排序1、算法思路:每趟将一个待排序的元素作为关键字,按照其关键字值得大小插入到已经排好的部分的适当位置上,知道插入完成。2、算法过程举个栗子(第一趟的排序过程)原始序列:49、38、65、97、76、13、27、491)开始以第一个元素49为关键字,看成一个序列,其余数看成另一个序列,此时一个关键字数49序列是有序的。结果:{49} {38、65、97、76、13、27、49}2)插入38。38<49,所以49向后移动一个位置,38插入到原49位置结果:{38、49}转载 2020-07-30 16:59:16 · 148 阅读 · 0 评论 -
java选择排序实现
java选择排序1、算法思想:选择排序,从头至尾扫描序列,找出最小的一个元素,和第一个元素交换,接着从剩下的元素中继续这种选择和交换方式,最终得到一个有序序列。2、算法过程举个栗子(第一趟的排序过程)原始序列:49、38、65、97、76、13、27、491)在进行选择排序过程中分成有序和无序两个部分,开始都是无序序列结果:49、38、65、97、76、13、27、492)从无序序列中取出最小的元素13,将13同无序序列第一个元素交换,此时产生仅含一个元素的有序序列,无序序列减一结果:{13转载 2020-07-30 15:59:24 · 228 阅读 · 0 评论 -
java实现冒泡排序
java冒泡排序实现(1)要排序数组:[10,1,35,61,89,36,55](2)第一趟排序:第一次排序:10和1比较,10大于1,交换位置 [1,10,35,61,89,36,55]第二趟排序:10和35比较,10小于35,不交换位置 [1,10,35,61,89,36,55]第三趟排序:35和61比较,35小于61,不交换位置 [1,10,35,61,89,36,55]第四趟排序:61和89比较,61小于89,不交换位置 [1,10,35,61,89,36,55]第五原创 2020-07-30 15:42:35 · 131 阅读 · 0 评论