![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法学习
基本算法了解,语言不分类
吾心即悟
你要悄悄成长,然后惊艳所有人。
展开
-
快速排序
快速排序算法思想:快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两 部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排 序,整个排序过程可以递归进行,以此达到整个数据变成有序序列图解:算法代码:package com.cao.sort;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util原创 2021-04-06 22:23:11 · 87 阅读 · 0 评论 -
希尔(优化插入)排序
希尔(优化插入)排序算法起源:看简单的插入排序可能存在的问题. 数组 arr = {2,3,4,5,6,1} 这时需要插入的数 1(最小), 这样的过程是: {2,3,4,5,6,6} {2,3,4,5,5,6} {2,3,4,4,5,6} {2,3,3,4,5,6} {2,2,3,4,5,6} {1,2,3,4,5,6}结论: 当需要插入的数是较小的数时,后移的次数明显增多,对效率有影响.希尔排序是希尔(Donald Shell)于 1959 年提出的一种排序算法。希尔排序也是一种插入排序,它是简原创 2021-04-06 16:41:08 · 114 阅读 · 0 评论 -
(简单)插入排序
插入排序(简单插入排序)算法思想:插入排序(Insertion Sorting)的基本思想是:把 n 个待排序的元素看成为一个有序表和一个无序表,开始时有 序表中只包含一个元素,无序表中包含有 n-1 个元素,排序过程中每次从无序表中取出第一个元素,把它的排 序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。图解:代码实现;package com.atguigu.sort;import java.text.SimpleDateFormat;import原创 2021-04-06 15:20:44 · 225 阅读 · 0 评论 -
选择排序
选择排序算法思想:选择排序(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]中选取最小值,与 arr[i-1]交换,…, 第 n-1 次从 arr[n-2]~arr[n-1]中选取最小值, 与 arr[原创 2021-04-05 23:16:23 · 63 阅读 · 0 评论 -
冒泡排序算法
冒泡排序基本思想:通过对待排序序列从前向后(从下标较小的元素开始),依次比较 相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。优化: 因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在 排序过程中设置一个标志 flag 判断元素是否进行过交换。从而减少不必要的比较。(这里说的优化,可以在冒泡排 序写好后,再进行)图解:小结上面的图解过程:(1) 一共进行 数组的大小-1 次 大的循环(2)每一趟排原创 2021-04-05 22:38:33 · 104 阅读 · 0 评论 -
八皇后问题
八皇后问题问题:在 8×8 格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任意两个皇后都不能处于同一行、 同一列或同一斜线上,问有多少种摆法(92)。算法思想:第一个皇后先放第一行第一列第二个皇后放在第二行第一列、然后判断是否 OK, 如果不 OK,继续放在第二列、第三列、依次把所有列都 放完,找到一个合适就开始下一个皇后继续第三个皇后,还是第一列、第二列……直到第 8 个皇后也能放在一个不冲突的位置,算是找到了一个正确 解当得到一个正确解时统计一次,然后又把第八个皇后放在下原创 2021-04-05 20:51:36 · 163 阅读 · 2 评论 -
迷宫问题
迷宫回溯问题描述:从开始点走到终点。图示:算法代码:package com.atguigu.recursion;public class MiGong { public static void main(String[] args) { // 先创建一个二维数组,模拟迷宫 // 地图 int[][] map = new int[8][7]; // 使用1 表示墙 // 上下全部置为1 for (int i = 0; i < 7; i++) { map[0原创 2021-04-05 17:09:13 · 138 阅读 · 1 评论 -
算法知识整理(onenote)
文章目录折半查找二叉树前序遍历中序遍历后序遍历随机数生成折半查找int Binsearch1(int r[], int n, int k) { int low = 0, hight = n - 1,mid=0; while (low <= hight) { mid = (hight + low) / 2; if (r[mid]>k) hight = mid-1; //避免死循环 else if(r[mid] < k)low = mid+1; //避免原创 2021-02-10 09:29:01 · 151 阅读 · 0 评论