算法
归子莫
对什么都感兴趣的开发者。
展开
-
查找--二分查找(Java)
查找--二分查找(Java) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 介绍 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。 过程 首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进原创 2020-06-30 14:22:48 · 578 阅读 · 0 评论 -
查找--线性查找(Java)
查找--线性查找(Java) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 介绍 线性查找又称顺序查找,是一种最简单的查找方法,它的基本思想是从第一个记录开始,逐个比较记录的关键字,直到和给定的K值相等,则查找成功;若比较结果与文件中n个记录的关键字都不等,则查找失败 线性查找可以的数列可以是有序的也可以是无序的 代码 package cn.guizimo.search; public class OrderSearch {原创 2020-06-30 12:23:56 · 870 阅读 · 0 评论 -
十大排序算法的分析
十大排序算法的分析 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 十大算法比对图 (来自尚硅谷) 相关术语解释 稳定 如果a原本在b前面,而a=b,排序之后a仍然在b的前面; 不稳定 如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面; 内排序 所有排序操作都在内存中完成; 外排序 由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行; 时间复杂度 一个算法执行所耗费的时间。 空间复杂度 运行原创 2020-06-27 15:47:35 · 1328 阅读 · 1 评论 -
基数排序(Java)
基数排序(Java) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 基数排序(桶排序)介绍 基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用 基数排序法是属于稳定性的排序,基数排序法的是效率高的稳定性排序法 基数排序(Radix Sort)是桶排序原创 2020-06-27 15:36:24 · 705 阅读 · 0 评论 -
归并排序(Java)
归并排序(Java) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 归并排序介绍 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。 代码 package cn.guizimo.sort;原创 2020-06-27 14:42:00 · 907 阅读 · 0 评论 -
交换排序之快速排序(Java)
交换排序之快速排序(Java) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 快速排序法介绍 快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列 代码 package cn.guizimo.sort; import j原创 2020-06-27 13:41:18 · 818 阅读 · 0 评论 -
插入排序之直接插入排序
插入排序之直接插入排序 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 插入排序法思想 插入排序(Insertion Sorting)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。 代码 package cn.guizimo.原创 2020-06-26 23:05:06 · 277 阅读 · 0 评论 -
选择排序之简单选择排序(Java)
选择排序之简单选择排序(Java) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 说明 选择排序(select sorting)也是一种简单的排序方法。它的基本思想是:第一次从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]中选取最小值原创 2020-06-26 22:15:24 · 288 阅读 · 0 评论 -
交换排序之冒泡排序(java)
交换排序之冒泡排序(java) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 说明 冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。 代码 package cn.guizimo.sort; import java.util.Arrays; public class Bu原创 2020-06-26 21:44:11 · 673 阅读 · 0 评论 -
算法的时间复杂度和空间复杂度
算法的时间复杂度和空间复杂度 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 算法的时间复杂度 时间频度 一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。 时间复杂度 一般情况下,算法中的基本操作语句的重复执行次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n) / f(n) 的极限值为不等于原创 2020-06-26 20:26:52 · 805 阅读 · 0 评论 -
递归--迷宫问题(Java)
递归--迷宫问题(Java) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 问题说明 制定好小球的移动路线,让它在迷宫里面找到终点的位置 问题思路 创建一个二维数组作为迷宫的地图 制定好小球的起点和终点位置 确定小球的运动规则,如下右上左 使用递归判断小球是否到达终点 代码 package question; public class Migong { public static void main(String[]原创 2020-06-25 16:05:19 · 962 阅读 · 0 评论 -
递归--八皇后问题(Java)
递归--八皇后问题(Java) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 问题介绍 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法 问题思路 第一个皇后先放第一行第一列 第二个皇后放在第二行第一列、然后判断是否OK, 如果不OK,继续放在第原创 2020-06-25 11:41:41 · 832 阅读 · 1 评论