java算法学习
文章平均质量分 50
介绍了java的主要算法和算法的理解,以相互学习为基础,对java的一些简单算法进行剖析,向需要学习算法的朋友提供遍历,希望对大家有用。
泥坑腕豪
腕豪
展开
-
字符匹配算法,两种(java)
字符匹配算法1.暴力匹配public class Match { public static void main(String[] args) { String str1 = "内蒙古工业内蒙古高原内蒙古工业大学女生少"; String str2 = "内蒙古工业大学"; int i = violenceMatch(str1, str2); System.out.println("----"+i); } publ.原创 2021-07-06 11:17:57 · 274 阅读 · 0 评论 -
地区覆盖问题(贪心算法)java
地区覆盖举例:电台1:北京 天津 上海电台2:呼和浩特 西安 北京电台3:武汉 西安电台4:青岛 上海从上述电台找到最少重复地电台来覆盖北京 天津 上海 西安 呼和浩特 青岛 武汉采用贪心算法package com.demo.tenDemo;import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;/** * @program: algorithm * @desc.原创 2021-07-06 10:45:38 · 133 阅读 · 0 评论 -
汉诺塔实现(java)
使用分治算法解决汉诺塔1.第一步2.第二步3.第三步使用分治,通过递归解决,不断地运行上面的四个步骤public class DAC { public static void main(String[] args) { hanoiTower(2,'A','B','C'); } private static void hanoiTower(int num, char a, char b, char c) { if (num == .原创 2021-07-05 17:39:27 · 71 阅读 · 0 评论 -
二分查找递归与非递归
1、递归public static int binarySearch(int[] array, int left, int right, int findVal){ int mid = (left+right)/2; int midVal = array[mid]; if (findVal > midVal){ return binarySearch(array,mid+1,right,findVal); }.原创 2021-07-05 17:27:49 · 53 阅读 · 0 评论 -
无重复字符的最长子串
方法一将字符串从第一个到最后一个都依次进行遍历,计算起无重复最长子串,并记录,比较长度。计算无重复最长子串方法:将循环i当作左指针,将rk比作右指针设置HashSet可以判断字符重复从i=0开始依次判断字符串如果判断不是重复,将字符加入HashSet并将右指针向右+1如果重复,记录字符长度=右指针-左指针+1=rk-i+1class demo{ public int BestlengthString(String s) { // 哈希集合,记录每个字符是否出现原创 2021-02-08 16:04:01 · 184 阅读 · 0 评论 -
java算法--归并排序操作
归并排序(java实现)一、归并排序简明介绍(从小到大)归并排序算法思想归并排序的时间复杂度为O(nlogn),所以归并排序是比较稳定的排序方法。归并排序就是将一组无序的 int 类型数组进行排序,此次以从小到大排序为例。核心:int[] array = {};核心将一组数组按中心点分为左右两部分,为两组。再将这两组继续分,直到每个小组内小于等于两个数据为止。到此分解过程结束,开始合并过程。将组内数据进行排序重组,按分组时的逆顺序最后得出排好序的数组。算法过程如果这张图看原创 2020-12-19 20:50:17 · 115 阅读 · 1 评论 -
java算法--快速排序操作
快速排序(java实现)一、快速排序简明介绍(从小到大)快速排序算法思想快速排序的平均时间复杂度为O(nlogn),最差时间复杂度为O(n2)所以插入排序是不稳定的排序方法。插入排序就是将一组无序的 int 类型数组进行排序,此次以从小到大排序为例。核心:int[] array = {};核心把n个待排序的元素看作一个有序表和一个无序表,从array[0]开始,此时有序表中只有array[0]一个元素,无序表中有n-1个元素,即array[1]—array[n-1]之间,排序过程中原创 2020-12-17 20:24:49 · 80 阅读 · 0 评论 -
java算法--希尔排序操作(区别交换法和移位法)
希尔排序(java实现)一、算法思想希尔排序交换法算法思想希尔排序就是将一组无序的 int 类型数组进行排序,此次以从小到大排序为例。核心:int[] array = {};思想:希尔排序是把记录按下标的一定增量来进行分组,对每组使用直接插入排序算法排序。随着增量的逐渐减少,每组包含的关键词越来越多,当增加减到1时,整个文件恰被分成一组,算法便终止。算法过程首先把较大的集合分为小块上图中,第一次的分组是按数组个数的一半 4 为间隙分的组,array[0] 和 array[4] 为一组原创 2020-12-12 17:53:33 · 655 阅读 · 4 评论 -
java算法--选择排序操作
选择排序(java实现)一、选择排序简明介绍(从小到大)选择排序算法思想选择排序的时间复杂度为O(n2),选择排序是比较不稳定的排序方法。n值越小越稳定。选择排序就是将一组无序的 int 类型数组进行排序,此次以从小到大排序为例。核心:int[] array = {};核心第一次从array[1]—array[n-1]中取最小值与array[0]交换第二次从array[2]—array[n-1]中取最小值与array[1]交换。。。。。2. 算法过程第一趟:数组第一位17原创 2020-12-10 15:06:05 · 76 阅读 · 1 评论 -
java算法--插入排序操作
qq原创 2020-12-09 21:18:05 · 194 阅读 · 2 评论 -
java算法--冒泡排序操作
java算法(排序)–冒泡排序一、冒泡排序简明介绍(从小到大)冒泡排序算法思想冒泡排序就是将一组无序的 int 类型数组进行排序,此次以从小到大排序为例。核心:int[] array = {};核心一两个相邻元素 (array[0]=a1,array[1]=a2) 比较大小,如果 array[0] > array[1],两数组元素就进行交换。完成后下标加一,继续用下两个相邻元素 (array[1]=a1,array[2]=a3) 比较大小。核心二两个相邻元素 (array[0]原创 2020-12-08 14:39:44 · 306 阅读 · 1 评论