数据结构
这人有点菜
这个作者很懒,什么都没留下…
展开
-
局部最小值
局部最小值 题目:给定一个无序数组,并且相邻两个元素不相等,求局部最小值 解题思路 存在3种情况: 最左边两个值,如果0位置处的值小于1位置处,则0位置处为局部最小 最右边的两个值,如果N-1位置处的值小于N-2位置处的值,则N-1处的值为局部最小值 当0位置处的值大于1位置处的值,N-1的值大于N-2处的值,则中间某个位置或者某几个位置必然会有局部最小值 /** * @program: datastruct * @ClassName LocalMin * @description: 局部最小值求原创 2021-01-08 21:42:49 · 896 阅读 · 1 评论 -
题目:在一个有序数组中查找>=某个数的最左侧的位置
二分查找 题目:在一个有序数组中查找>=某个数的最左侧的位置 package com.nsu.search; /** * @program: datastruct * @ClassName NearLeftSearch * @description: 在一个有序数组中,找>=某个数最左侧的位置 * @author: lixiangqing * @create: 2021-01-07 21:57 * @Version 1.0 **/ public class NearLeftSea原创 2021-01-08 21:41:30 · 681 阅读 · 0 评论 -
二分查找
二分查找 解题思路:不断的找中间值下标,当中间值小于要查找的值,则在右半部分在进行二分,再与查找值进行比较,当中间值大于查找的值,则在左半部分进行二分,再与查找值进行比较。 /** * @program: datastruct * @ClassName BinarySearch * @description: 二分查找 精确查找某一个值 * @author: lixiangqing * @create: 2021-01-07 21:21 * @Version 1.0 **/ public c原创 2021-01-08 21:39:43 · 103 阅读 · 0 评论 -
插入排序
插入排序 将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。) 保证0~i上有序 /** * @program: datastruct * @ClassName InsertSort * @description: 插入排序 * @author: lixiangqing * @create: 2021-01-原创 2021-01-08 21:37:47 · 71 阅读 · 0 评论 -
选择排序
评估算法优劣的核心指标是什么? 时间复杂度(流程决定) 空间复杂度(流程决定) 常数项时间(实现细节决定) 认识对数器 你想要测试的方法a 实现复杂度不好但容易实现的方法b 实现一个随机样本产生器 把方法a和方法b跑相同的随机样本,看看得到的结果是否一致 如果一个随机样本使得比对结果不一致,打印样本进行人工干预,改对方法a和方法b 当样本数量很多时,比对测试依然正确,可以确定方法a已经正确 选择排序 首先在未排序的数组中找到最小元素,存放在数组的起始位置 再从剩余的元素中寻找最小元素,放在已排好序原创 2021-01-08 21:35:58 · 135 阅读 · 1 评论 -
冒泡排序
冒泡排序 比较相邻元素,如果前者比后者大,交换位置 对每一对相邻元素进行同样操作,遍历一次之后,最后一个元素为最大元素 public class BubbleSort { public static void bubbleSor(int[] arr) { // 边界条件(不存在或者长度小于2) if (arr == null || arr.length < 2) { return; } /**原创 2021-01-08 21:33:17 · 56 阅读 · 0 评论