
常用算法
rainyRs
这个作者很懒,什么都没留下…
展开
-
快速排序
快速排序基本思想算法步骤图解代码示例java基本思想选取序列中的第一个数为基准,将大于该基准数的元素移动到它的右侧,将小于该基准数的元素移动到它的左侧。然后分别对左右两侧的的序列分别递归的进行相同的操作,直到最后所有元素都排好序。算法步骤从数列中挑出一个元素做为 “基准”(pivot);将比这个基准数数大的数全放到它的右边,小于或等于它的数全放到它的左边;再对左右两侧的序列分别重复第...原创 2019-08-08 16:16:32 · 169 阅读 · 0 评论 -
归并排序
归并排序基本思想算法步骤图解代码示例java基本思想归并排序的思想是,利用二分的特性,将序列分成两个子序列进行排序,将排序后的两个子序列归并(合并),当序列的长度为2时,它的两个子序列长度为1,即视为有序,可直接合并,即达到归并排序的最小子状态。算法步骤申请空间,使其大小为两个已排序数组长度之和,该空间用来存储合并后的序列;设置两个指针分别指向两个已排序序列的起始位置;比较两个指针所...原创 2019-08-08 18:30:45 · 274 阅读 · 0 评论 -
简单选择排序
简单选择排序基本思想代码示例java示例基本思想从所有元素中找出最小的与第0个元素交换;然后从第一个元素往后找出最小的与第一个元素交换;依次类推,直到最后。代码示例java示例public void selectionSort(int[] a){ for(int i = 0; i < a.length - 1; i++){ int minIndex = i; for(in...原创 2019-08-07 13:53:45 · 254 阅读 · 0 评论 -
冒泡排序
冒泡排序基本思想从第0个元素到第n-1个元素进行遍历,若前一元素大于后一元素,则交换两元素,这样可以将序列中最大值冒泡到最后;然后从第0个到第n-2个元素进行遍历,以此往复,直到只剩一个元素。算法步骤从第0个元素到第n-1个元素进行遍历,比较相邻元素,若前一元素大于后一元素,则交换两元素;遍历第0个到n-2个元素,重复步骤#1;重复上面的步骤直到只剩一个元素。代码示例java...原创 2019-08-07 14:20:05 · 241 阅读 · 0 评论 -
直接插入排序
直接插入排序基本思想将待排序序列中元素依次插入到已排序序列中的合适位置。假设初始有序序列是由原序列的第一个元素组成,那么需要遍历第1到第n-1个元素,依次将当前元素插入到有序序列中的合适位置。算法步骤假设初始有序序列为由原序列的第0个元素组成;设置监视岗var,将带插入元素赋值给var;从有序序列的末尾位置j开始自后向前遍历,遍历过程中将元素依次后移a[j + 1] = a[j],直...原创 2019-08-07 15:04:02 · 171 阅读 · 0 评论 -
二分插入排序
二分插入排序基本思想将直接插入排序中寻找A[i]的插入位置的方法改为采用折半比较,其余相同。算法步骤计算 0 ~ i-1 的中间点,用 i 索引处的元素与中间值进行比较,如果 i 索引处的元素大,说明要插入的这个元素应该在中间值和i索引之间,反之,就是在刚开始的位置到中间值的位置,这样很简单的就完成了折半;在相应的半个范围里面找插入的位置时,不断的用(1)步骤缩小范围,不停的折半,范围...原创 2019-08-07 15:32:56 · 226 阅读 · 0 评论 -
希尔排序
希尔排序基本思想希尔排序是对插入排序的改进。插入排序一个比较耗时的地方在于需要将元素反复后移,因为它是以1为增量进行比较的元素的后移可能会进行多次。一个长度为n的序列,以1为增量就是一个序列,以2为增量就形成两个序列,以i为增量就形成i个序列。希尔排序的思想是,先以一个较大的增量,将序列分成几个子序列,将这几个子序列分别排序后,合并,再缩小增量进行同样的操作,知道增量为1时,序列已经基本有序...原创 2019-08-07 16:11:42 · 133 阅读 · 0 评论 -
计数排序
计数排序基本思想算法步骤代码示例java基本思想将序列中各元素转换为键存储在额外开辟的数组空间中。做为一种线性时间复杂度的排序算法,计数排序要求输入的数据必须是有确定范围的整数。算法步骤找出待排序序列arr中最大元素max和最小元素min;定义计数数组countArr,大小为max-min+1;统计待排序序列中每个元素i的出现次数,存入到数组countArr的i-min项;遍历计数...原创 2019-08-09 17:39:41 · 235 阅读 · 0 评论