算法
文章平均质量分 84
我是王小贱
1,东方欲晓,莫道君行早!!!
2,今天你多学一门技术,明天少说一句求人的话。
展开
-
求两数之和最有效的方法
两数之和解法一、for循环遍历求解二、采用给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]有很多人会问,这不很简单的一个题目吗,一个数组,求数组中两数之和等于指定的数值target,直接双层for循环遍历数组不就行了吗。这个思路没错,但是我们知道,数组的循环原创 2020-07-23 09:12:54 · 796 阅读 · 0 评论 -
Java中算法---直接插入排序
一、排序思路将原有的数组看为两块,一块是已经排好序的(我们叫有序区),一块是待排序的(我们叫无序区),不断地从无序区中取出其第一个元素,搜寻该元素应该放在有序区的哪个位置,并将该元素放入该位置,完成这个步骤后,有序区长度+1,无序区长度-1,直至无序区长度为0,即无序区中不再有元素,排序就完成啦。举个例子:给定一组数:9 3 1 5 2 4 3 8从小到大进行排序,图示:代码实现: /...原创 2020-01-18 10:17:57 · 218 阅读 · 0 评论 -
Java中算法---快速排序
快速排序也是一种采用分治法解决问题的一个典型应用。在很多编程语言中,对数组,列表进行的非稳定排序在内部实现中都使用的是快速排序。而且快速排序在面试中经常会遇到。快速排序的基本思想如下:对数组进行随机化。从数列中取出一个数作为中轴数(pivot)。将比这个数大的数放到它的右边,小于或等于它的数放到它的左边。再对左右区间重复第三步,直到各区间只有一个数。理解: 如下图所示,假设最开始的基...原创 2020-01-17 16:36:49 · 285 阅读 · 0 评论 -
Java打印杨辉三角
编程中经典的算法很多,其中杨辉三角突出表明我国国代数学发展的极致,也是面试算法中常常问到的问题:@Test public void test() { int row = 8 ; // 在循环中依次保存当前行上一行每个元素的值 int prev = 1; int[] arr = new int[row]; ...原创 2020-01-17 13:41:53 · 216 阅读 · 0 评论 -
斐波那契数列
斐波那契数列几乎是每一个学习编程的人都绕不开的一道笔试题;斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=...原创 2020-01-17 09:36:11 · 533 阅读 · 0 评论 -
Java中算法---选择排序
原理:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕。也就是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。基于此思想的算法主要有简单选择排序、树型选择排序和堆排序。(这里只介绍常用的简单选择排序)简单选择排序的的基本思想:给定的集合数组arr,第一趟排序,假定0位置的值是最小值,在待排序数组arr[1]...原创 2019-11-14 13:13:09 · 161 阅读 · 0 评论 -
Java中算法---冒泡排序
冒牌排序就是将N个数字按照一定的顺序(从大到小或从小到大或自定义排序条件等)排列,总共需要进行N1趟排序,每i趟的排序次数为(N-i)次,所以用双层循环来实现排序,外层控制循环多少趟,内层控制每一趟的循环次数。冒泡排序的关键就是找准内外排序的次数,外循环执行N-1次,内循环就执行N-i次。思路解析:给定一个集合,依次比较相邻两个数(以数字集合为例,集合存放的都是数字,按从小到大排序),将小...原创 2019-09-25 16:18:46 · 251 阅读 · 0 评论