数据结构和算法
迷茫中前进
古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。
展开
-
基础算法练习04--折半插入排序
折半插入排序相比直接插入排序,时间复杂度并没有改变。但是,折半插入排序减少了元素比较的次数。基本的操作就是:通过折半查找,找到有序序列中要插入的位置。从这个位置开始往后,有序序列的所有元素向后移动一位,将需要插入的元素放入这个位置。 代码: package cn.drc.sort.insertsort; import java.util.Arrays; /** * 折...原创 2018-12-04 12:48:56 · 310 阅读 · 1 评论 -
Java基础练习05--数组中最长递增子序列长度
小猴子下山,沿着下山的路有一排桃树,每棵树都结了一些桃子。小猴子想摘桃子,但是有一些条件需要遵守,小猴子只能沿着下 山的方向走,不能回头,每颗树最多摘一个,而且一旦摘了一棵树的桃子,就不能再摘比这棵树结的桃子少的树上的桃子。那么小 猴子最多能摘到几颗桃子呢? 举例说明,比如有5棵树,分别结了10,4,5,12,8颗桃子, 那么小猴子最多能摘3颗桃子,来 自于结了4,5,8颗桃子的桃树 其实,这就...原创 2018-12-05 10:37:13 · 1136 阅读 · 0 评论 -
java基础练习01--查询Fibonacci数列第n个数
package cn.drc.fibonacci; /** * Fibonacci数列是这样的一个数列: * 1 1 2 3 5 8 13 21 ... * 求出这个数列第 n 个数是多少 * @author drc * */ public class FibonacciDemo { public static void main(String[] args) { ...原创 2018-11-29 10:49:17 · 488 阅读 · 0 评论 -
基础算法练习03--直接插入排序
直接插入排序是一种简单的排序方法,它的基本操作是将一个纪录插入到已经排好的记录中,从而得到一个新的、记录数增1的有序表。 代码: import java.util.Arrays; /** * 使用数组进行演示: * 首先我们将数组的第一个元素作为"有序表",其余的元素作为 "无序表" * 排序方法: * 1.将 arr[1] 加入到 "有序表"中,和arr[0] 比...原创 2018-12-01 00:30:02 · 182 阅读 · 0 评论 -
基础算法练习02--二分查找(Binary Search)
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列 -- 百度百科 下面演...原创 2018-11-29 23:21:23 · 297 阅读 · 0 评论 -
基础算法05--二分查找(递归方式)
基础算法练习05–二分查找2 采用递归的方式进行查找,将查到的数的位置返回,查不到则返回-1. /** * 递归实现二分查找 * @param arr 要查找的数组 * @param low 要从数组的什么位置开始查找 * @param high 到数组的什么位置结束 * @param target 要查找的数 * @return 返回查找的数的位置,查不到则返回-1 */ static int binarySearch(int[] arr, int low, int high, int target)原创 2020-08-25 22:36:01 · 201 阅读 · 0 评论