- 博客(12)
- 资源 (22)
- 收藏
- 关注
原创 动态规划解连续子数组的最大和问题
package Sword69; // 连续子数组的最大和 // 在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。 // 但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢? // 例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。 // 给一个数组,返回它的最大连续子序列的和?(子向量的长度至少是1) // 求最优值 一般为动态规划 有两种方案:自顶向下(递归+动态规划)、.
2021-01-22 14:40:05 106
原创 1. 回溯法解全排列问题
package Sword69; import java.util.ArrayList; import java.util.List; // 全排列 N皇后 采用回溯法 // 回溯法框架: // 1. 做选择,即加入到选择list // 2. 递归(选择list, 可选list) // 3. 取消选择,即从选择list移除 public class Code025 { public static void main(String[] args) { int[] arr.
2021-01-22 14:36:52 132 1
原创 10. 堆排序
package Sort; import java.util.Arrays; // 堆排序 是一种利用堆结构的选择排序, // 每次堆调整完成后,根就是最大值,取下根节点重新调整,直到堆只有一个元素 // 从最后一个非叶子结点开始(叶结点自然满足堆原则),从左至右,从下到上(i--逆序遍历非叶子节点),调整节点与子节点的位置使其满足堆原则 // nlogn public class BigHeapSort { public static void main(String []args){ .
2021-01-16 09:40:23 109
原创 9. 基数排序
package Sort; //基数排序,与计数排序,桶排序都是利用桶的概念,只是使用方法有些差异 // 基数排序步骤, // 1. 按个位数进行排序 // 2. 按十位数排序 // 3. 按百位数排序 public class RadixSort { /* * 获取数组a中最大值 * * 参数说明: * a -- 数组 * n -- 数组长度 */ private static int getMax(int[.
2021-01-16 09:38:43 64
原创 8. 桶排序
package Sort; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; // 桶排序是计数排序的扩展(桶区间为1即为计数排序),分支思想, 每个桶有序,再合并 // 极端场景 所有元素集中在一个桶 则桶排序无意义 // 先定界范围, 然后按区间划分桶 public class BucketSort { public static void main(String[] arg.
2021-01-16 09:38:08 89
原创 7. 计数排序
package Sort; import java.lang.reflect.Array; import java.util.Arrays; // 计数排序, 空间换时间 // 需要知道序列的最大值和最小值, 开辟一个数组,索引为元素的值, 值为元素出现的次数, 然后将数组按出现的次数依次拷回到原数组 // n+k public class CountSort { public static void main(String[] args) { int[] arr = .
2021-01-16 09:37:18 70
原创 6. 希尔排序
package Sort; import java.util.Arrays; // 与直接插入排序的区别和联系:按步长分组,同一组内进行直接插入排序(直接插入步长为1,希尔排序一般选n/2为步长,依次除以2) // 时间复杂度 nlogn public class ShellSort { public static void main(String[] args) { int[] arr = {5, 4, 3, 2, 1}; ShellSort(arr,.
2021-01-16 09:36:24 71
原创 5. 归并排序
package Sort; import java.util.Arrays; // 归并排序 // 从中间分组,分成两组排序(如果左索引小于右索引则继续划分), 各自排完后再合并到一起 public class MergeSort { public static int[] mergeSort(int[] nums, int l, int h) { if (l == h) return new int[] { nums[l] }; in.
2021-01-16 09:35:40 76
原创 4. 选择排序
package Sort; import java.util.Arrays; // 起始位 与最小值位交换 public class SelectSort { public static void main(String[] args) { int[] arr = {5, 4, 3, 2, 1}; for (int i = 0; i < arr.length; i++) { int x = arr[i]; .
2021-01-16 09:34:50 59
原创 3. 快速排序
package Sort; import java.util.Arrays; // 快速排序思想, 选第一个数(或其他数),比他小的放左边, 比他大的放右边 // 挖坑, 前面有坑,从后面遍历,比他基准值小的就填坑进去;后面有坑,从前面遍历, 比基准值大的就填进去 // 遍历完一轮后, 比基准值小的都在左边,比基准值大的都在右边,再分成两份再重复操作,直到只有一个元素(左索引大于等于右索引)就返回 public class QuickSort { public static void main.
2021-01-16 09:33:18 112 2
原创 2. 插入排序
package Sort; import java.util.Arrays; // 将 元素插入到已经排好序的 序列, 插入操作需要移动有序序列的元素腾位置 public class InsertSort { public static void main(String[] args) { int[] arr = {5, 4, 3, 2, 1}; for (int i = 1; i < arr.length; i++) { .
2021-01-16 09:32:35 55
原创 1. 冒泡排序
package Sort; import java.util.Arrays; // 相邻元素交换 public class BubbleSort { public static void main(String[] args) { int[] arr = {5, 4, 3, 2, 1}; for (int i = 0; i < arr.length; i++) { for (int j = i + 1; j .
2021-01-16 09:31:59 56
WIFI启动助手简版(快速启动).zip
2016-10-19
IBM PC Assembly Language and Programming 4th ed pdf
2015-03-12
IBM PC Assembly Language and Programming 5th ed pdf
2015-03-12
黑客入门训练.rar
2014-07-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人