
算法
文章平均质量分 63
ytuglt
这个作者很懒,什么都没留下…
展开
-
算法系列-稀疏数组
1、引子 在学习稀疏数组之前,我们先看一个场景案例: 需求: 编写的五子棋程序中,有存盘退出和续上盘的功能 其中1代表黑子,2代表蓝子 问题分析: 此二维数组中的很多值是默认值0,记录了很多没有意义的数据,这种场景下引出了我们接下来要学习的稀疏数组 2、基本介绍 使用场景: 当一个数组中大部分元素为0,或者为同一个数值时,此时可以使用稀疏数组对该数组进行压缩保存 处理方法: 1)记录数组一共有几行几列,有多少个不同的值 2)把具有不同值的元素的行列&值保存在一个小规模的数组中,从而缩写程序的规模原创 2021-09-05 23:15:05 · 196 阅读 · 0 评论 -
算法系列-插入排序
基本介绍 插入排序属于内部排序法,是对欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。 基本思想 把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表中的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。 思路图 代码实现 package com.air; import java.util.Arrays; public class InsertSort {原创 2020-06-07 21:51:33 · 172 阅读 · 0 评论 -
算法系列-选择排序
基本介绍 选择排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,在依规定交换位置后达到排序目的。 基本思想: 第一次从arr[0]~arr[n-1]中选取最小值,与arr[0]交换; 第二次从arr[1]~arr[n-1]中选取最小值,与arr[1]交换; 第三次从arr[2]~arr[n-1]中选取最小值,与arr[2]交换; … 第i次从arr[i-1]~arr[n-1]中选取最小值,与arr[i-1]交换; … 第n-1次从arr[n-2]~arr[n-1]中选取最小值,与arr[n原创 2020-06-07 18:10:07 · 135 阅读 · 0 评论 -
算法系列-冒泡排序
基本介绍 基本思想: 通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移到后部,就像水底的气泡一样逐渐向上冒。 因为排序过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个 flag用来判断元素是否进行交换过,从而减少不必要的比较。 规则思路 我们对一个简单的序列进行排序,10,6,7,-2,-1 第一趟排序 第1次比对结果: 6,10,7,-2,-1 第2次比对结果:6,7,10,-2,原创 2020-06-07 17:22:50 · 311 阅读 · 0 评论 -
算法系列-排序算法基础概要
常见排序算法分类 算法时间复杂度 度量一个程序(算法)执行时间有下面两种方法: 事后统计的方法 这种方式是可以统计的,但是存在两个问题: 1.想要对设计的算法的运行性能进行评测,需要实际运行此算法程序 2.所度量的时间依赖与计算机运行时的硬件、软件等环境因素 故,这种统计方式 要在同一台计算机的相同状态下运行,才能比较哪个算法速度更快 事前估算的方法 通过分析某个算法的时间复杂度来判断哪个算法更优 ...原创 2020-06-07 16:14:39 · 261 阅读 · 0 评论