算法
warmwine
道力之限,愿力所破。
展开
-
快速排序法(QuickSort)——交换类排序法(java实现)
快速排序法(Quicksort)思想与java实现快速排序法是一种分治排序的算法,通过两个元素的交换来消除线性表中的多个逆序,将数组有计划的分为两个部分,然后再分别对两个部分进行递归进行排序。 Quicksort的基本思想如下从线性表选取一个**基准元素Key**(通常选取第一个元素),在线性表两段利用指针遍历元素对key进行比较交换。从而使得key左边的元素小于等于key,key右边的元素大于Ke原创 2017-07-10 23:48:27 · 495 阅读 · 0 评论 -
冒泡排序法(BubbleSort)——交换类排序法(java实现)
冒泡排序法从数组的第一个元素arr[0]开始,两两比较arr[0]与arr[0+1],如果前面的数大于后面的数(arr[i]>arr[i+1]),那么交换两个元素的位置,把大的数往后移动。这样依次经过一轮比较以后,最大的数将会被交换到最后的位置arr[arr.length-1]。 接下来进行下一轮的比较,此轮比较的次数较上一轮少一次,因为上一轮中的最大值已经排到最后面。以此进行循环,直到排序结束。原创 2017-07-11 22:02:29 · 1758 阅读 · 0 评论 -
简单插入排序(Insertion Sort)——插入类排序法(Java实现)
所谓插入排序,就是将无序序列中的各个元素插入到已经有序的线性表中。在线性表中,只包含第一个元素的子表显然可以看作有序表。接下来,我们需要将第2个开始和以后的每一个元素插入到只包含第一个元素的子表中。我们假设将第j个元素进行插入,j-1之前的元素都已经有序。插入过程如下:设temp = 第j个元素。从有序子表的最后一个元素(j-1)开始,依次向前(--)与temp进行比较,如果前者大于后者,将大于te原创 2017-07-14 20:25:08 · 486 阅读 · 0 评论 -
希尔排序(Shell Sort)——插入排序法(Java实现)
希尔排序法(Shell Sort)属于插入类排序,又称为缩小增量排序。它对直接插入排序有了很大的改进,是直接插入排序的增强版。 希尔排序的基本思想是: 把线性表按步长gap分组,共有gap个组。 每组线性表中有arr.length/gap个元素,每个元素相邻gap。接下来对每组线性表采用直接插入排序方法进行排序。 随着步长逐渐减小,所分成的组包含的元素越来越多,当步长的值减小到 1原创 2017-07-14 20:26:44 · 543 阅读 · 0 评论 -
堆排序法(Heap Sort)——选择类排序法(Java实现)
堆排序法属于选择类排序法。最坏时间复杂度为O(nlogn) 堆的定义:堆是完全二叉树。具有n个元素的序列(h1,h2,...,hn),当且仅当满足hi>=h(2i) && hi>=h(2i+1)(此时树中的非叶子节点值均大于等于左右子节点值),或hi>=h(2i) && hi>=h(2i+1)(此时书中的非叶子节点值均小于等于左右子节点值)。 此篇文章以第一原创 2017-07-16 15:51:50 · 847 阅读 · 0 评论