
算法
人畜无害的萌新史莱姆
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
一个递归实例
递归方法(Recursion) 递归:指在当前方法内调用自己的这种现象。 递归的分类: 递归分为两种,直接递归和间接递归。 直接递归称为方法自身调用自己。 间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。 注意事项: 递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。 在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。 实例: public class Recursion { //打印3次 Hello,world publ原创 2021-08-22 11:14:44 · 79 阅读 · 0 评论 -
一个冒泡排序
原理:比较两个相邻的元素,将值大的元素交换至右端。 思路:依次比较相邻的两个数,将小数放到前面,大数放到后面。 即第一趟,首先比较第1个和第2个元素,将小数放到前面,大数放到后面。 然后比较第2个和第3个元素,将小数放到前面,大数放到后面。 如此继续,直到比较最后两个数,将小数放到前面,大数放到后面。 重复第一趟步骤,直至全部排序完成。 /* {6,3,8,2,9,1} 第一轮: 第1次:arr[0]与arr[1]比较,6>3成立,就交换,{3,6,8,2,9,1} 第2原创 2021-08-21 20:30:29 · 347 阅读 · 0 评论 -
一个二分查找
二分查找:主要就是建立 left、right、mid,用 mid 与待查找的元素比较,并调节下标。 class BinSearch{ public static void main(String[] args){ //二分查找:要求素组元素必须可以比较大小,且数组必须是有序的 //使用二分查找在数组中查找 value 是否存在,并显示index int[] arr = {2, 4, 5, 6, 8, 19, 20, 34, 35, 50}; int value = 34;原创 2021-08-21 19:47:01 · 81 阅读 · 0 评论 -
终端实现《算法》(第四版)BinarySearch.java程序详细步骤
blog实现了命令行终端布置《算法》(第四版)运行学习环境: 首先确保自己PC的java运行环境正常! 一、到官网下载algs4.jar(本书的标准库)和algs4-data.zip(本书的数据支持文件); 官网下载网址:https://algs4.cs.princeton.edu/code/,找到上面的2个文件,下载到本地。 二、解压algs4-data.zip到自己的文件夹备用;解压algs4.jar,将里面的edu文件(即标准库包edu.princeton.cs.algs4.*)夹留着备用;原创 2020-06-21 10:43:14 · 707 阅读 · 0 评论 -
最常用的排序算法——快速排序
最常用的排序算法,当然是快速排序算法了,下面给出可以直接运行的快速排序算法思想和代码: 思想: ①一般设置第一个数为基准数; ②先从右往左找一个小于基准数的数,在从左往右找一个比基准数大的数,然后交换他们; 继续,直到两边探测变量“相遇”; ③交换“相遇”位置的数字和基准数位置(即第一个数的位置),从而把基准数放置与中间位置; ④基准数左边:比基准数小,采用递归继续重复 ⑤基准...原创 2018-11-29 23:43:41 · 328 阅读 · 0 评论 -
迷人的名字——冒泡排序算法
冒泡排序的核心是双层套嵌,所以他的时间复杂度为O(N*N),它是有一个迷人的名字的算法,不过复杂度较大,所以在使用中应避免。 思想: 每次比较相邻的元素,如果他俩的大小顺序错误,就交换他们的位置。 实现:如果有n个数,就需要进行(n-1)次操作,每次操作比较相邻的两个数,并调整他们的顺序位置 附上C语言代码示例: #include "stdio.h" int main(){ i...原创 2018-11-30 00:14:09 · 189 阅读 · 0 评论 -
一个深度优先搜索的小实例——数的全排列
深度优先搜索是一个利用递归来实现的搜索算法,它是数据结构中在“树”的遍历中常用的一个很有用的算法。 下面的一个小实例实现了输入一个0到9的数n,输出这个数的从1-n的所有全排序结果。它体现了深度优先搜索的设计思想和实现方法。 好了,下面附上C语言实现的代码: #include "stdio.h" /** * 深度优先搜索: * ...原创 2018-12-01 12:44:32 · 286 阅读 · 0 评论