算法
镇潮
向全栈努力
展开
-
Java算法(1):选择排序
选择排序 1.定义: (1)找到数组中最小的那个元素 (2)将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换) (3)在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置 (4)如此以往,直到将整个数组排序 总结,不断地选择剩余元素之中的最小者,并放到剩余元素的第一个位置。 2.代码剖析: 假设:数组a,长度n,下标i (1)这个算法每次...原创 2019-02-02 21:39:04 · 252 阅读 · 0 评论 -
Java算法(2):插入排序
插入排序 1.定义: (1)插入排序类似于咱们日常打扑克的时候,通常我们给牌排序时,总是将一张牌插入到其他已经有序的排中的适当位置。 (2)由(1)可知,插入排序是通过遍历数组,并将当前元素与前面已经排好序的元素一一比较,获得最佳位置 (3)为了给要插入的元素腾出空间,需要将其余所有元素在插入之前都向后移动一位。 (4)与选择排序一样,当前索引左边的所有元素都是有序的,但它们的最终位置还...原创 2019-02-03 15:24:28 · 246 阅读 · 0 评论 -
Java算法(3):希尔排序
希尔排序 1.定义: (1)基于插入排序的排序算法 (2)原因:对于大规模乱序数组插入排序很慢,因为它只会交换相邻的元素,因此元素只能一点一点地从数组的一端移动到另一端。例如:若值最小的元素正好在数组的尽头,要将它挪到正确的位置就要要进行 数组的长度-1 次移动。 (3)希尔排序时先将任意间隔为h的元素都进行插入排序,同时,间隔h是一个递增序列中的一个值,且h按照递增序列递减,即这个h会随...原创 2019-02-06 02:53:27 · 259 阅读 · 0 评论 -
Java算法(4):归并排序
归并排序 1.定义: (1)归并操作:将两个有序的数组归并成一个更大的有序数组。 (2)通过递归的进行归并操作就是归并排序。 (3)归并排序又分为自顶向下的归并排序和自底向上的归并排序。 2.实现归并操作: 代码剖析:当我想要将两个有序的数组归并成一个更大的有序数组时。 首先,我们需要一个空的辅助数组来达到更好的存取值的效果; 接着,比较前一个有序数组的当前元素与后一个有序数...原创 2019-02-12 21:09:34 · 793 阅读 · 0 评论 -
Java算法(5):快速排序
快速排序 1.定义: (1)快速排序是一种分治的排序算法,它将一个数组分成两个子数组,将两部分独立地排序。 (2)快速排序和归并排序时互补的:归并排序将数组分成两个子数组分别排序,并将有序的子数组归并以将整个数组排序;而快速排序将数组排序的方式则是当两个子数组都有序时整个数组也就自然有序了。 (3)归并排序时,递归调用发生在处理整个数组之前;快速排序时,递归调用发生在处理整个数组之后。 ...原创 2019-02-28 17:27:10 · 380 阅读 · 0 评论