算法
lupa1521
这个作者很懒,什么都没留下…
展开
-
排序(一)
1、冒泡排序最大的元素放到最后,第二个元素放到倒数第二个位置时间复杂度O(n2)例:6 3 5 7 0 4 1 2步骤:1)0-n-1(整体):第一个数和第二个数比较,哪个大哪个放到后面,第二个数和第三个数比较,依次比较后,最大的数放在最后的位置6 3 5 7 0 4 1 23 6 5 7 0 4 1 23 5 6 7 0 4 1 23 5 6 0 7 4 1...原创 2019-04-17 11:04:35 · 200 阅读 · 0 评论 -
二分搜索
1、mid=(left+right)/2可能溢出,最好写成:mid=left+(right-left)/22、给定一个无序数组arr,已知任意相邻的两个元素值都不重复,请返回一个局部最小的位置3、给定一个有序数组,再给定一个整数num,请在arr中找到num这个数出现的最左边的位置4、给定一个有序循环数组arr,返回arr中的最小值。...原创 2019-04-19 08:48:47 · 72 阅读 · 0 评论 -
二叉树
1、树public static class Node { public int value; public Node left; public Node right; public Node(int data) { this.value = data; } }2、先序遍历:根左右 中序遍历:左根右 后序遍历:左右根3、递归方式实...原创 2019-04-18 21:18:31 · 111 阅读 · 0 评论 -
链表
1、单链表双链表2、单链表插入和删除插入:找到插入节点前一个节点和后一个节点,前一个节点next指针指向新插入的节点,新插入节点的next指针指向下一个节点s->next=p->next;p->next=s删除:找到删除节点前一个节点和后一个节点,把前一个节点的指针指向后一个节点p->next=p->next->next3、链表的...原创 2019-04-18 10:12:59 · 126 阅读 · 0 评论 -
队列和栈
栈结构的基本操作pop()top()或peek()push()size()队列的基本操作push()头部pop()尾部O(1)双端队列 首尾都可以添加弹出元素深度优先队列:栈宽度优先队列:队列1、编写一个栈,只能用两个栈结构实现队列,支持队列的基本操作stackpush和stackpop如果stackpush要往stackpo...原创 2019-04-17 23:46:12 · 135 阅读 · 0 评论 -
栈和队列
1、栈的基本操作 栈顶poptop或peekpushsize2、队列的基本操作push往队头加元素pop队尾加元素O(1)3、双端队列首尾都可以添加、删除元素深度优先遍历可以用栈实现宽度优先遍历可以用队列实现递归函数调用函数栈一、实现一个特殊的栈,在实现栈的基本功能上,再实现返回栈中最小元素的功能stackData Stac...原创 2019-04-17 22:00:41 · 84 阅读 · 0 评论 -
字符串
1、给定彼此独立的两颗树头节点分别为t1和t2,判断t1中是否有与t2树拓扑结构完全相同的子树二叉树序列化+KMPstr1 和 str2 判断str1中是否包含str22、给定两个字符串str1和str2,str1和str2中出现的字符种类相同且出现次数也一样,那么str1和str2互为变形词,判断两个词是否为变形词哈希表,用长度为256的整形数组代替哈希表int[] map=...原创 2019-04-17 19:43:38 · 129 阅读 · 0 评论 -
排序(三)
1、已知一个几乎有序的数组,选择什么排序算法?计数排序、基数排序---不基于比较的排序算法限制,不适用于所有情况冒泡排序、选择排序----与数组原始序列无关插入排序--插入排序过程与原始顺序有关 每个元素移动距离不超过K快速排序、归并排序--与数组原始顺序无关改进堆排序:a[0]……a[k-1]建立小根堆,弹出堆顶(最小值)a[k]放到堆顶,调整小根堆,弹出堆顶a...原创 2019-04-17 11:57:55 · 98 阅读 · 0 评论 -
排序(二)
桶排序不是基于比较的排序时间复杂度 O(N)1、计数排序员工按照身高排序100-300建立桶将员工按照身高放入桶中,依次倒出员工,便是以按身高排好序2、基数排序eg:23 14 101 72 84 11步骤:1)将数字位数统一023 014 101 072 084 0112)建立0-9 10个桶按个位数比较,进入相应的桶01:101、0...原创 2019-04-17 11:27:14 · 116 阅读 · 0 评论