随笔分类 - 数据结构与算法
摘要:快排运用的基本思想是经典的荷兰国旗问题。就是给定一个无序数组和一个数(在数组中出现),将数组中大于给定数的放在左边(小于区),等于给定数的放在中间(等于区),大于给定数的放在右边(大于区)。然后在小于区和大于区继续这一过程,不断递归进行,直到最终小于区、大于区只有一个元素为止。 为什么时间复杂度都是
阅读全文
摘要:堆排序利用了二叉堆这一特殊的数据结构,关于二叉堆我们可以将其想象成一棵完全二叉树,虽然其实现是通过数组,为什么能通过数组实现呢?因为其父节点与左、右子节点存在明确的关系,已知父节点的索引就可以找到其子节点,已知子节点索引也能很容易找到父节点的索引。 如果父节点索引为 i,那么其左节点的索引为 2*i
阅读全文
摘要:归并排序利用了递归的思想以及外部排序。外部排序就是给两个有序数组整体排成一个有序的大数组或者将一个数组分成有序的两部分后进行整体排序,基本过程是由两个指针分别指向两个有序数组的头部位置,然后比较两个指针指向的元素,同时需要一个一个大小为两个有序数组大小之和的辅助数组,比较哪个小就将该元素复制到辅助数
阅读全文
摘要:与选择排序前面的元素有序不同的是,冒泡排序每次排序是将最大的元素交换到后面去,每一趟排序排定一个元素位置,即未排序的最后一位。
阅读全文
摘要:选择排序的思想较为简单,就是每一趟遍历剩下的所有元素,找到其中最小的,然后交换使之排到当前的最前面位置(就是未排定元素中的第一个位置)。 选择排序是一种不稳定排序。
阅读全文
摘要:插入排序的基本思想是当排到位置 i 的时候,前面的所有元素都是有序的,但不保证都处于最终位置上,即可能后面有可能插入新的元素,而这插入的过程就是当前位置 i 上的元素向前插入,直到不能再插入为止。 例如一个数组经过几趟插入排序后是[1,3,4,2,6],此时应该排 i = 3,那么元素2就要与前一个
阅读全文
浙公网安备 33010602011771号