![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 51
JackeyJobs
将编程变成兴趣
展开
-
Leetcode算法题逐一击破—No.001
[每日一道算法题]# 题号:001# 题名:两数之和# 难度:简单题目描述:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应 一个 答案。但是,数组中同一个元素 不能使用两遍。你可以按 任意顺序 返回答案。解题思路(一):双层循环遍历数组,在数组中寻找target - nums[i],找到时输出两数的下标解题代码:class Solution { pub原创 2021-01-05 15:24:15 · 154 阅读 · 0 评论 -
排序算法之计数排序
[非比较排序-计数排序]1.算法思想计数排序要求数据必须是有确定范围的整数需要定义一个新的数组,用于存放原数组中元素的个数2.流程分析直接上例子:int[] array = {12, 9, 3, 7, 5, 8, 5}先循环遍历array数组,获取数组元素中的最大值[12]和最小值 [3]定义一个新的数组bucket,长度为[最大值 - 最小值 + 1] = 10调用Arrays.fill(bucket, 0)将bucket中的所有元素用0填充,用于计数bucket:{0,0,0,原创 2020-12-27 00:58:33 · 194 阅读 · 4 评论 -
排序算法之选择排序
[选择排序]简单选择排序1.算法思想:按数组顺序依次选定一个元素作为比较值,遍历数组,找出最小值,与比较值交换2.流程分析:直接上例子:int[] array = {3, 2, 10, 4, 8, 5, 7, 9, 6, 1}以 array[0] = 3 作为比较值,记录下标minIdx = 0遍历array[1]~array[9],与3比较array[1]=2<3,然后更新minIdx = 1array[9]=1<2,更新minIdx = 9交换array[9]、arr原创 2020-12-23 17:13:20 · 73 阅读 · 0 评论 -
排序算法之希尔排序
[插入排序-希尔排序]前言(不重要):希尔排序是希尔这个人提出的,又名缩小增量排序,是改进版的插入排序1.算法思想优先比较距离远的元素,将数组元素拆分之后再进行插入排序以length/2作为增量n,比较a[i + n]、a[i],若a[i + n]较小,交换a[i + n]与a[i]缩小增量n /= 2 ,比较a[i + n]、a[i]、a[i - n]…,若a[i + n]比其他都小,则提到最前面当n = 1时,即对整个数组进行插入排序2.流程分析直接上例子:int[] a = {6原创 2020-12-23 16:57:14 · 71 阅读 · 0 评论 -
排序算法之插入排序
[插入排序-普通插入排序]1.算法思想将元素a视为基序列,遍历数组将元素a右边的元素依次插入序列中,找到比自己小的数置于其后,保证序列一直处于已排序的状态。2.流程解析将元素a作为基序列向序列中插入元素b,比较a、b若b < a,将a向后移动一个位置,b赋值给a,序列:[b、a]若b > a,则不变插入元素c,比较c与a、b若c < b < a,将b后移,a后移,c前置,序列:[c、b、a]若b < c < a,将b后移,a不变,原创 2020-12-23 16:09:31 · 90 阅读 · 0 评论 -
排序算法之快速排序
[交换排序-快速排序]1.算法思想:选择一个元素作为基准,先从右向左遍历数组寻找比基准小的数a,然后从左向右寻找比基准大的数b,交换a和b的值,当左右会面时,与基准数交换值。目的是让基准数处于数组中间位置可以将基准理解为分数线,选取60作为及格线,通过左右交换的方式确定左边都是不及格的元素,右边则都是及格的元素,然后对不及格和及格部分再进行细分,例如及格可以分为优和良,以90和70作为基准;不及格可以分为中和差,以50和30作为判断基准,将元素置于对应的区间内。2.流程解析定义数组:int[]原创 2020-12-23 15:15:40 · 362 阅读 · 6 评论 -
深入理解排序算法
用最通俗易懂的语言,深入解读排序算法**前言:**什么是排序,算法又是什么?排序:将杂乱无章的数据元素,通过一定的方法按关键字顺序排列的过程叫做排序。目的是将一组“无序”的记录序列调整为“有序”的记录序列,比如说升序、降序、奇偶排序(奇升偶降、奇降偶升)等。算法(Algorithm):是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令。代表着用系统的方法描述解决问题的策略机制。一个算法的优劣可以用空间复杂度与时间复杂度来衡量,常用的算法有递推法、递归法、穷举法、贪心算法、分治法、动态规原创 2020-12-17 17:41:14 · 314 阅读 · 0 评论 -
排序算法之冒泡排序
[交换排序-冒泡排序]1.算法思想相邻元素进行数值比较,当前一个元素大于后一个元素时,交换两个元素的值,每次遍历都能将最大的值置于数组末尾。2.流程解析定义int型数组array,包含10个元素int[] array = {85, 88, 47, 13, 54, 4, 34, 6, 78, 48};定义int型变量i,表示数组下标int i = 0; //初始值为0,(i >= 0 且 i < 10 )循环遍历数组,若array[i] > array[i + 1],交原创 2020-12-23 12:59:51 · 109 阅读 · 2 评论