
算法与数据结构
没有核心思想,代码永远是代码!
厚积博发
一个人一台电脑一个办公桌能撸一天
展开
-
插入排序(java)
一、理论思想二、思路和实现package com.sgh.algorithm4.algorithmdatastructure.sort;import java.util.Arrays;/** * @author sugha * @version 1.0 * @description * @date 2021/6/10 0010 17:23 */public class InsertSort { public void insertSort(int[] arr) {原创 2022-04-17 10:15:50 · 98 阅读 · 0 评论 -
选择排序(java)
一、排序原理1.每一次遍历的过程中,都假定第一个索引处的元素是最小的值,和其他索引处的值一次进行比较,如果当前索引的值大于其他某个索引处的值,则假定其他处索引的值作为作为最小值,最后可以找到最小值所在的索引。2.交换最小一个索引处和最小值所在的索引处的值有仁兄能推荐一个画动图的软件吗?二、思路、代码实现package com.sgh.algorithm4.algorithmdatastructure.sort;import java.text.SimpleDateFormat;import原创 2022-04-16 17:52:56 · 92 阅读 · 0 评论 -
通过两道关于异或运算的题了解异或
一、给定一个n长度的数组,数组中只有一个数出现奇数次。(一)思路异或^满足交换结合规律,如:a异或b 和 b异或a结果相同;一个数组中出现偶数次的数通过遍历数组异或,而最终会为零。(二)代码实现/**测试数组int[] arr = {1,1,1,1,2,2,3,3,3};//根据交换、结合律{1,1,1,1,2,2,3,3,3}{1,1,1,1,3,2,3,2,3}其实结果是一样的,就好比1*5和5*1结果相同一样。*/ public static int getOneN(int[]原创 2022-03-07 13:51:16 · 439 阅读 · 0 评论 -
认识时间复杂度、空间复杂度
时间复杂度(一)常数时间的操作一个操作如果和数据量没有关系,每次都是固定时间内完成的操作,这叫常数操作,如加减乘数,数组的寻址操作时间复杂度作为一个算法流程中,常数操作数量的指标。常用O(读作big O)来表示。具体来说,在常数操作数量的表达式中,只要高阶项,不要低阶项,也不要高阶项的系数,剩下的部分如果记为f(N),那么时间复杂度为O(f(N))。评价一个算法流程的好坏,先看时间复杂度的指标,然后再分析不同数据样本下的实际运行时间,也就是**“常数项时间”**。(二)常见算法时间复杂度选择排序:原创 2022-03-03 20:54:38 · 150 阅读 · 0 评论 -
查找(线性查找、二分查找、插值查找)
一、线性查找线性查找就好比去停车场(一排)找一个车牌号对应车的位置,只能一个一个遍历呗。public class SeqSearch { @Test public void test(){ int[] arr = {1,8,3,9,10,7}; int value = 5; if ( SeqSearch.seqSearch(arr,value) == -1) { System.out.println("没找到")原创 2021-06-10 10:58:10 · 118 阅读 · 0 评论 -
冒泡排序(java)
冒泡排序原理:比较两个相邻的元素,将值大的元素交换到右边。思路、代码实现冒泡代码思路将代码运行一遍你可能就明白了,就是将最大的一步一步换到最右侧。 /** * 分不进行 * * @param arr */ public static void bubbleSort1(int[] arr) { //[3, 9, -1, 10, 20] System.out.println("排序前:" + Arrays.toString原创 2021-04-09 12:09:21 · 141 阅读 · 0 评论 -
单链表的增删改查
直接上代码,别的不说。算法还是非常的有趣。注释写了一些简单的逻辑,如果有讨论请留言。package com.sgh.algorithm4.algorithmdatastructure.Linkedlist;import lombok.Data;import lombok.Getter;import lombok.Setter;import lombok.ToString;/** * 单链表的实现 * @author sugha * @version 1.0 * @descriptio原创 2021-03-16 22:52:06 · 117 阅读 · 0 评论 -
背包、队列、栈(java)
一、背包(一)概念背包是一种不支持从中删除元素的集合数据类型,目的是帮助用例收集元素并迭代所有收集到的元素,也可以检查背包是否为空,或者获取背包中元素的数量。背包里面的元素的顺序不确定。儿时的记忆:要理解背包的概念,可以想象一个喜欢收集弹珠球的人。他将所有的弹珠球都放在一个背包里,一次一个,并且会不时在所有的弹珠球中寻找某一颗;(二)代码实现package com.sgh.algorithm4.datainfrastructure;import java.util.Iterator;impo原创 2021-03-09 21:34:14 · 184 阅读 · 0 评论