算法
皮皮后
人只要坚持把自己变好,就真的会越来越好
展开
-
递归与迭代的差异
前言:每当我遇到一个问题想用递归进行求解时,心里总有另一个我在问:如果用迭代来解会不会更好?!通过一些问题的总结,后来发现这个纠结的答案取决于我们想做什么。递归方法有点类似于以镜像的方式来解决问题,一层一层的往下传递数据,然后在一层一层的往上返回值。举个栗子:比如说求5的阶乘画个图来直观的看一下用递归求解的过程:这就可以看出一个问题,每次递归调用都会增加开销。小结一哈:递归(1)递归...原创 2020-02-26 23:51:02 · 260 阅读 · 0 评论 -
堆算法及堆排序(Java实现)
对于堆算法由以下几点需要注意:(1)堆化:当插入一个元素到堆中,它可能不满足堆的性质,在这种情况下,需要调整堆中元素的位置使之重新变为堆,这个过程就叫堆化。(2)插入元素:在堆中插入新元素,是将新元素放入堆尾部,然后再重下至上堆化这个元素。并且使堆的大小加一。(3)删除元素:从堆中删除元素,只需要从根节点删除元素,当删除根节点后,将堆的最后一个元素复制到这个位置,然后删除掉最后一个元素。当用...原创 2020-01-07 23:06:51 · 221 阅读 · 0 评论 -
选择排序
简介:选择排序法是每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。由于选择操作是基于键值的且交换操作只在需要时执行,所以选择排序常用于数值较大和键值较小的文件。算法:1)寻找序列的最小值2)用当前位置的值交换最小值3)对所有元素重复上述过程,直到整个序列排序完成算法实现: public static void select_sort( ...原创 2019-12-30 12:37:02 · 116 阅读 · 0 评论 -
求斐波那契数列第n项
简介:斐波那契数列(Fibonacci sequence),又称黄金分割数列、兔子数列,是数学家列昂纳多·斐波那契于1202年提出的数列。斐波那契数列为1、1、2、3、5、8、13、21、34……此数列从第3项开始,每一项都等于前两项之和,递推公式为F(n)=F(n-1)+F(n-2),n≥3,F(1)=1,F(2)=1。算法实现:public static long fib( int n ...原创 2019-12-30 11:48:44 · 3243 阅读 · 3 评论 -
查找算法--顺序法(Java实现)
简介:顺序查找法又称线性查找法,是一种最简单的查找法。该算法的原理是将数据一个一 个地按顺序逐次查找。所以不管数据的顺序是什么样的,都得从头到尾遍历一次。优点: 文件在查找前不需要作任何的处理与排序缺点: 是查找速度较慢算法实现:public static int linear_search(int arr[], int len, int key) { int pos=...原创 2019-12-30 11:17:08 · 944 阅读 · 0 评论 -
快速排序--单轴快排&&双轴快排(Java实现)
快速排序-- --单轴快排&&双轴快排(Java实现)简介:近几日在学习算法课程,课程中有讲到一种重要且又常用到的排序算法–快速排序,便根据书中算法思想写出程序记录于此,便于日后温习。若博文中有错误之处期待能指明。快速排序分为单轴快排和双轴快排,下面首先讲解经典的单轴快排...原创 2019-10-30 17:06:38 · 677 阅读 · 0 评论 -
插入排序算法(用Java实现)
##插入排序算法前言:最近有在学习算法知识,想把学到的内容记录下来供自己以后复习,同时也将自己的见解和想法写出来供大家参考。先上代码吧,代码中写有相应的分析:``` import java.util.Scanner;public class sy22 {public static void insert_sort( int arr[], int len ) //插入排序算法部分...原创 2019-10-13 20:58:45 · 170 阅读 · 0 评论