- 博客(14)
- 资源 (2)
- 收藏
- 关注
原创 堆排序
一、定义 是指用树的结构,利用树与数组的对应关系遍历数组。左子树为:2*n+1,右子树为:2*n+2;最后一个父节点的位置为:arr.length/2-1,倒数第二个父节点为:arr.length/2-1二、思想1.根据升序和降序而定,构建成一个大顶堆或者小顶堆,2.将堆顶元素和末尾元素交换3.重新调整结构,满足大顶堆或者小顶堆,将堆顶元素和末尾元素交换,反复执...
2019-10-10 23:12:42 80
原创 线索二叉树
一、定义 对二叉树的节点加上线索的二叉树,叫做线索二叉树二、原理 从百度中查到定义,对于n个结点的二叉树,在二叉链存储结构中有n+1个空链域,利用这些空链域存放在某种遍历次序下该结点的前驱结点和后继结点的指针,这些指针称为线索,加上线索的二叉树称为线索二叉树。这种加上了线索的二叉链表称为线索链表,相应的二叉树称为线索二叉树(Threaded BinaryTree)。根据...
2019-10-09 21:23:31 104
原创 二叉树删除节点
一、要求 1.没子节点时,直接删除 2.有子节点时,删除该节点。 如果该节点有左节点,则左节点为父节点,右节点不变,如果没只有左节点或者右节点,则直接提升为父节点。二、代码树根节点删除 public Hero delNode(int no) { Hero hero = null; if(this.r...
2019-09-30 15:08:35 674
原创 二叉树的前序、中序、后序查找
一、定义 二叉树可以通过三种方式遍历树的节点,分别是前序、中序和后序。 前序:根节点->左节点->右节点 中序:左节点->根节点->右节点 后序:左节点->右节点->根节点总结,根据根节点的输出位置理解前序、中序和后续。二、代码 public Hero preSearch(in...
2019-09-30 15:02:30 1191
原创 二叉树简介
一、为何出现二叉树 常见的数据结构,有数组和链表,但是数组查找快、增删慢(数组长度变化引起),链表增删快、查询慢(一个个节点遍历),有没有一种数据结构即可以满足查询快、增删也快?这时二叉树由此而生。仅代表个人观点。二、树的概念 节点:包含一个元素以及若干若干指向子树的分支 根节点:孩子节点的根 子节点:根节点的孩子。 叶子节点...
2019-09-30 10:10:27 220
原创 插值查找
一、定义 插值查找法是对二分查找法的改进,改进的地方是中间下标的算法。插值查找法在数值分布均匀的情况下,比二分法查找的速度快,如果数值分布不均,速度就大打折扣了。二、思想1.二分查找法的中间值:(left+right)/2 转变成 left+1/2*(right-left)2.插值查找的中间值:left+(key-arr[left])/(arr[right]-arr...
2019-09-26 14:05:21 86
原创 二分查找法
一、定义又称“折半查找”,需要原始数据有序存储。二、思想假设原始数据按升序存储,查找的值为x,首先取出中间的值midValue(取法:(left+right)/2),如果x>midValue,证明值在右边,从右边数据中继续查找,如果x<midValue,值在左边,从左边的数据中查找,依次循环以上步骤。三、代码取一个下标 public static int ...
2019-09-26 10:59:25 60
原创 基数排序
一、定义 把待排序的各个数据,首先按照个位数,放到各个桶中,然后按照十位数,放到各个桶中,以此类推。又称桶装法。二、思想按各个位数,放到桶中。三、代码 public static void main(String[] args) { int[] arr = {2,34,234,3,1,6,343,6778}; ...
2019-09-24 22:37:32 68
原创 快速排序
一、定义 以一个值为基准x,把大于该值的数放在x的右边,把小于该值的数据放在x的左边,然后左边和右边递归以上步骤。二、思想 分而治之。三、代码实现方法1: public class QuickSort { public static void main(String[] args) { int[] arr = {3,1,5,6,...
2019-09-23 22:41:42 112
原创 插入排序
一、定义插入式排序属于内部排序法,是对欲排序的元素以插入的方式找到该元素的适当位置,已达到排序的目的。二、思想把N个待排序的元素看成一个有序表和无序表,开始时有序表中只有一个元素,无序表中包含N-1个元素,排序过程中,每次从无序表中取出第一个元素,依次与有序表中的元素进行比较,将他插入到合适的位置,成为新的有序表。三、代码 public class InsertSort ...
2019-09-07 17:44:41 64
原创 选择排序
一、定义 从数组中取出第一个数,然后从剩余的数中由低到高依次遍历,与第一个数比较,取出最大或最小的一个数(与排序的顺序有关),得到数组中第一个数的值,然后取第二个数,依次与从剩余的数中由低到高依次遍历,与第二个数比较……直到最后一个。二、代码public class SelectSort { public static void main(String[] ...
2019-08-30 10:48:21 80
原创 冒泡排序
一、定义 定义一个数组,依次从低到高的下标次序进行循环,如果相邻的两个数为逆序(从小到大排列),则对这两个数的位置进行调换,需要遍历数组的长度减一次,时间复杂度o(N^2)。 如果数组有序,一次完整的遍历没有交换位置,则数据已经是有序的,可以通过flag进行优化。二、代码 public class BubbleSort { public st...
2019-08-29 09:42:59 67
原创 数据库中取班级前N名
最近一次偶然的机会,看到贴吧中讨论一个数据库问题,取每个班级中的前3名学生,趁着空余时间,自己也研究了一下。创建SCORE表cs:id,name,class,scoreoracle中:select * from ( select name,class,sc, rank() over(partition by class order by sc de...
2019-08-21 11:48:45 267
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人