算法
licjd
技术可以让人走的更远,思想可以让人走的更高
展开
-
回文串判断
出处:https://baike.baidu.com/item/%E5%9B%9E%E6%96%87%E4%B8%B2/1274921?fr=aladdin基本思想:1、初始化标志flag=true;2、输入字符串str,并获取其长度len;3、定义并初始化游标i=0,j=len-1,分别指向字符串开头和末尾;4、比较字符str[i]和str[j],若i==j,转至 7、 ,否则往下执行 5、;5...转载 2018-04-09 22:41:45 · 212 阅读 · 0 评论 -
堆排序(Heap Sort)- java实现
学习自严蔚敏、吴伟民的《数据结构》-清华大学出版过于复杂,理解的不够透彻,只存放代码部分1、建立堆:/** * 由于使得数组元素递增排序,所以先建一个“大顶堆”,即先选得一个关键字为最大的记录并与序列中最后一个记录交换 * 所以,每次访问数组会是n-i * @param arr-数组元素 * @param s-开始位置-0 * @param m-结束位置-逐渐减1(从数组长...原创 2018-11-06 21:34:44 · 148 阅读 · 0 评论 -
简单选择排序(Simple Selection Sort)- java实现
学习自严蔚敏、吴伟民的《数据结构》-清华大学出版一趟简单选择排序的操作为:通过n-i次元素之间的比较,从n-i+1个记录中选出元素最小的记录,并和第i(i >= 1 && i <=n)个记录进行交换。时间复杂度为:O(n2)。 public static void selectSort(int[] arr) { for (int i = 0; i &l...原创 2018-09-27 18:30:20 · 146 阅读 · 0 评论 -
希尔排序(Shell’s Sort)/缩小增量排序(Diminishing Increment Sort)- java实现
学习自严蔚敏、吴伟民的《数据结构》-清华大学出版希尔排序是对直接插入排序的改进直接插入排序(Straight Insertion Sort)- java实现基本思想:先将整个待排序序列分割成若干个子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。简单来说,以数组长度的一半dk开始缩小增量(增量可以自由确定,书中说这涉及到一些数学尚未解决...原创 2018-09-22 20:27:06 · 224 阅读 · 0 评论 -
折半插入排序(Binary Insertion Sort)- java实现
学习自严蔚敏、吴伟民的《数据结构》-清华大学出版 直接插入排序(Straight Insertion Sort)- java实现在上一篇有关直接插入排序中,当待排序记录的数量n很小时,这是一种很好的排序方法。但是,通常待排序的序列中的记录数量n很大,则不宜采用直接插入排序。为此,在此基础上,从减少“比较”、“移动”这两种操作的次数着眼,可以使用折半插入排序。由于插入排序的基本操作是在一...原创 2018-09-21 19:25:39 · 782 阅读 · 0 评论 -
直接插入排序(Straight Insertion Sort)- java实现
学习自严蔚敏、吴伟民的《数据结构》-清华大学出版最简单的排序方法。基本操作是将一个记录插入到已排序好的有序表中,从而得到一个新的、记录数增1的有序表。先看代码: public static int[] insertSort(int[] arr) { for (int i = 1; i < arr.length; i++) { // arr[i]需要向前移动 if...原创 2018-09-20 20:19:44 · 241 阅读 · 0 评论 -
快速排序(Quick Sort)- java实现
学习自严蔚敏、吴伟民的《数据结构》-清华大学出版快速排序是对起泡排序的一种改进。起泡/冒泡排序(Bubble Sort)- java实现基本思想:通过一趟排序将待排序数组分割成独立的两部分,其中一部分的元素均比另一部分的元素小,之后分别对这两个部分继续进行排序,分隔成两部分...通常是将数组中的第一个元素设为枢轴(pivot),然后按以下原则进行排序:将所有比它小的放到它前面,将所...原创 2018-09-24 09:38:50 · 141 阅读 · 0 评论 -
起泡/冒泡排序(Bubble Sort)- java实现
学习自严蔚敏、吴伟民的《数据结构》-清华大学出版过程很简单,首先将第一个元素与第二个元素进行比较,若第一个元素比第二个元素大,则进行交换,然后比较第二个元素与第三个元素。依次类推,直至第n-1与第n个元素比较完,这样最大的元素会被交换到最后一个位置。上述过程为一趟排序,然后进行第二趟排序,直到第n-1个元素...一般需要n-1趟比较,才可以将整个无序的数组排成有序状态,时间复杂度为O(n2...原创 2018-09-24 09:36:28 · 145 阅读 · 0 评论 -
HashSet/HashMap存储过程、扩容、实现原理
论坛可以帮助程序员很快的提升自己,第一次看见这句话不以为然,因为多多少少逛过,感觉并没有对自己多大帮助慢慢逛论坛次数多了,感觉自己只是在打发时间,根本对自己没有任何帮助。突发奇想不再逛首页,而是通过各大板块选自己最近学的知识来检验自己的学习。------------------------------------------------------分割线----------------...原创 2018-08-26 21:04:39 · 3262 阅读 · 0 评论 -
归并排序(Merging Sort)- java实现
学习自严蔚敏、吴伟民的《数据结构》-清华大学出版归并排序(Merging Sort)是又一类不同的排序方法。“归并”的含义是将两个或两个以上的有序表组合成一个新的有序表。利用归并的思想容易实现排序。假设初始化序列含有n个记录,则可以看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到[n/2]个长度为2或1的有序序列;再两两归并……直到得到一个长度为n的有序序列为止,这种归并排...原创 2018-11-06 21:48:39 · 201 阅读 · 0 评论