
排序算法
逆光下的轮廓
这个作者很懒,什么都没留下…
展开
-
直接插入排序
插入排序的基本思想:先把要排序的数组分成两部分,第一部分只包含第一个元素,天然有序,而第二部分则包含了数组中除开第一个元素的剩余所有元素。依次将第二部分中的每一个元素插入到已经有序的第一部分中,并且仍保持第一部分有序。每次插入一个元素,有序部分将增加一个元素。重复此过程,直到最后有序部分包含所有元素。 当然,有序部分也可以是最后一个元素。 好了,话不多说,上图。 初始数组如下:原创 2015-05-17 19:18:43 · 542 阅读 · 0 评论 -
希尔排序
希尔排序(Shell‘s Sort)又称“缩小增量排序”(Diminishing Increment Sort),是一种基于插入排序的快速的排序算法。对于大规模的乱序数组插入排序很慢,因为它只会交换相邻的元素。如果最小的元素正好在数组的尽头,要将它插入到正确的位置就得进行 N - 1次移动。希尔排序为了加快速度简单地改进了插入排序,交换不相邻的元素以对数组的局部排序,并最终使用插入排序将局部有序的原创 2015-05-22 10:10:05 · 487 阅读 · 0 评论 -
快速排序
快速排序的基本思想:任意选择一数作为个基准数,通过一趟排序将要排序的数据分割成两个独立的部分。其中一部分所有数都小于基准数,位于其左侧,另一部分所有数都大于基准数,位于其右侧。然后按照同样的方法对分别对两部分数据进行排序,直到最后所有数据都变得有序。 基准数可以任意选取。 假设现在有这样一个初始序列: 首先,我们选取第一个数 5 作为基准数,并在开头和结尾分安插上一个哨兵 l 和原创 2015-05-19 17:12:18 · 663 阅读 · 0 评论 -
选择排序之简单选择排序
选择排序的基本思想:首先,找到数组中最小的哪个元素,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素,那么它就和自己交换)。其次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。重复前面的步骤,直到整个数组有序。 说到这儿,还得提到冒泡排序。选择排序其实算得上是冒泡排序的一个升级版。它们之间最主要的区别是:冒泡排序每一次比较都可能交换,而选择排序则是在每次比较时,记录最小原创 2015-05-20 20:47:56 · 598 阅读 · 0 评论 -
统计一篇英文文章中出现次数最多的10个单词
import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.Comparat原创 2014-10-12 00:19:09 · 5194 阅读 · 0 评论 -
有一个数组,每隔两个数删掉一个数,到末尾又循环到开头继续进行,求最后一个被删除的数的原始下标位置
源代码中有较详细的注释,这里就不多写了。/** * 有一个数组a[N],要求每隔两个数删掉一个数,到末尾则又循环到开头继续进行 * 求最后一个被删掉的数的原始下标位置 * * 例如,一个数组:{0, 1, 2, 3, 4, 5, 6, 7} * 0->1->2(第一遍,删除)->3->4->5(第一遍,删除)->6->7-> * ...原创 2015-09-11 11:57:20 · 10011 阅读 · 3 评论