随笔分类 - Scala
摘要:快速排序 快速排序是一种分治的排序算法。它将一个数组分成两个子数组,将两部分独立地排序。快速排序和归并排序是互补的:归并排序是将数组分成两个子数组分别排序,并将有序的子数组归并以将整个数组排序,而快速排序将数组排序的方式则是当两个子数组都有序时整个数组也就自然有序了,归并排序的地柜调用发生在处理整个
阅读全文
摘要:归并排序 归并排序是将两个有序的数组归并成一个更大的有序数组,要对一个数组排序,可以先不断递归地将数组分为两半进行排序,最后再将结果归并起来。归并排序最吸引人的性质是它能保证任意长度为N的数组所需时间和NlogN成正比,它的主要缺点是它所需的额外空间和N成正比。 图1-1的树状图显示了要将arr[0
阅读全文
摘要:插入排序 通常人们在摸牌的时候,每摸到一张牌,都会将它插入到已经有序的牌中的适当位置。在计算机的实现中,为了给要插入的元素腾出空间,我们需要将其余所有元素在插入之前都向右移动一位,这种算法叫插入排序,与选择排序一样,当前索引左边的所有元素都是有序的,但它们最终的位置还不确定,为了给更小的元素腾出空间
阅读全文
摘要:选择排序 选择排序是最简单的排序方法之一,它的做法是这样的:首先,找出数组中最小的那个元素,将最小的元素与第一个元素的位置互换,然后找出数组中第二小的元素,与数组中第二个元素互换位置(如果要比较的元素是当前最小,则自己和自己交换),以此类推,直到遍历了整个数组。这种方法叫做选择排序,因为它会不断地选
阅读全文

浙公网安备 33010602011771号