![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
KiMiWaWonderful
我就是个傲娇的孩子
展开
-
数据结构学习(十二):二分查找
一、思路首先确定该数组的中间的下标;然后让需要查找的数findVal和arr[mid]比较;2.1 findVal>arr[mid],说明要查找的数在mid的右边,因此需要递归地向右查找;2.2 findVal<arr[mid],说明要查找的数在mid的左边,因此需要递归地向左查找;2.3 findVal==arr[mid],找到,返回;什么时候结束递归3.1 找到结束...原创 2020-03-29 17:40:04 · 191 阅读 · 0 评论 -
数据结构学习(十一):快速排序
一、思想通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按照该方法对这两部分数据分别进行快速排序,整个排序可以递归进行,以此达到整个数据变成有序序列。二、代码public static void quickSort(int[] arr, int left, int right) { //左下标 int l...原创 2020-03-28 17:45:56 · 130 阅读 · 0 评论 -
数据结构学习(十):希尔排序
一、交换法public static void shellSort(int[] arr) { int temp = 0; int count = 0; for (int gap = arr.length; gap > 0; gap /= 2) { //第一轮排序 //第一轮排序是将10个数据分...原创 2020-03-28 12:55:54 · 136 阅读 · 0 评论 -
数据结构学习(九):插入排序
一、思想把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只有一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序依次将有序元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。第1趟排序后的数组:[101, 34, 119, 1]第2趟排序后的数组:[34, 101, 119, 1]第3趟排序后的数组:[34, 101...原创 2020-03-28 10:21:51 · 104 阅读 · 0 评论 -
数据结构学习(八):选择排序
一、思路原始数组:101,34,119,1第一次排序:1 ,34,119,101第二次排序:1,34 ,119,101第三次排序:1,34,101 ,119说明:1.选择排序一共有(数组大小-1)次排序;2.每一次排序,又是一个循环:(1)先假定当前这个数是最小数(2)然后和后面的每个数进行比较,如果有发现比当前数更小的数,就重新确定最小数,并得到下标;(3)当遍历到数组最后时...原创 2020-03-28 10:01:33 · 199 阅读 · 0 评论 -
数据结构学习(六):八皇后问题(回溯)
一、使用一维数组表示皇后所在的位置 //定义一个max表示共有多少个皇后 int max = 8; //定义数组array,保存皇后放置位置的结果,比如arr = {0,4,7,5,2,6,1,3} //arr[i] = val,val表示第i+1个皇后,放在第i+1行的第val+1列 int[] array = new int[max];二、输出皇后摆放的位...原创 2020-03-26 20:15:25 · 242 阅读 · 0 评论 -
数据结构学习(六):迷宫问题(递归)
一、迷宫的定义//先创建一个二维数组,模拟迷宫 int[][] map = new int[8][7]; //使用1表示墙 //上下全部置为1 for (int i = 0; i < 7; i++) { map[0][i] = 1; map[7][i] = 1; ...原创 2020-03-26 20:00:19 · 377 阅读 · 0 评论 -
数据结构学习(五):逆波兰表达式(后缀表达式)
一、将中缀表达式转换成后缀表达式的具体思路初始化2个栈:运算符栈s1和储存中间结果的栈s2;从左至右扫描中缀表达式;遇到操作数时,将其压入s2;遇到运算符时,比较其与s1栈顶运算符的优先级:(1)如果s1为空,或栈顶运算符为“(”,则将此运算符入栈;(2)否则,若优先级比栈顶运算符的高,也将运算符压入s1;(3)否则,将s1栈顶的运算符弹出并压入到s2中,再次转到4....原创 2020-03-25 12:12:40 · 426 阅读 · 0 评论 -
数据结构学习(四):约瑟夫环
一、定义节点class Boy { private int no; private Boy next; public Boy(int no) { this.no = no; } public int getNo() { return no; } public void setNo(int no) { ...原创 2020-03-25 10:19:28 · 136 阅读 · 0 评论 -
数据结构学习(三):双向链表
一、双向链表定义class HeroNode2 { public int no; public String name; public String nickname; public HeroNode2 next; public HeroNode2 pre; public HeroNode2(int no, String name, String...原创 2020-03-22 18:24:05 · 117 阅读 · 0 评论 -
数据结构学习(二):单链表试题
1.编写一个方法,接收head节点,同时接收一个index 2.index表示倒数第index个节点 3.先把链表从头到尾遍历,得到链表的总长度(getLength) 4.得到size后,从链表的第一个开始遍历(size-index)个,就可以得到原创 2020-03-22 13:11:17 · 195 阅读 · 0 评论 -
数据结构学习(一):单链表
一、单链表定义class HeroNode { public int no; public String name; public String nickname; public HeroNode next; public HeroNode(int no, String name, String nickname) { this.no =...原创 2020-03-21 22:27:52 · 108 阅读 · 0 评论