
算法
文章平均质量分 69
DR达仁
随心去做自己的决定
展开
-
简单排序算法(冒泡排序、选择排序、插入排序)
简单排序算法(冒泡排序、选择排序、插入排序)一、冒泡排序1、介绍: 冒泡排序和选择排序的思想是蛮力法,冒泡,顾名思义,每次选择后面一个元素(最大或者最小)冒上来,从而得到一个有序的序列。比如对于序列:10、8、5、7、3、1的冒泡第一趟演示图示如图所示可见第一趟过后做大元素10已经沉底,第二趟就对另外的8、5、7、3、1进行上述同样的比较冒泡,会使得最大原创 2014-01-14 21:07:54 · 2000 阅读 · 0 评论 -
冒泡排序算法及其优化
冒泡排序1、介绍:冒泡排序和选择排序的思想是蛮力法,冒泡,顾名思义,每次选择后面一个元素(最大或者最小)冒上来,从而得到一个有序的序列。比如对于序列:10、8、5、7、3、1的冒泡第一趟演示图示如图所示可见第一趟过后做大元素10已经沉底,第二趟就对另外的8、5、7、3、1进行上述同样的比较冒泡,会使得最大元素8沉底,...... ,最终可得到一个有序序列。原创 2014-03-29 13:20:51 · 5218 阅读 · 0 评论 -
Java数据结构--栈的实现
Java中是没有栈这种数据结构的,如果想利用栈的先进后出(FILO),就必须自己动手实现。栈的底层可以使用数组,也可以使用Java中的容器类,如ArrayList、LinkList等。栈最常用的操作主要是压栈(push)、出栈(pop)、查看栈顶元素(peek)、判断栈是否为空(isEmpty)、返回栈的当前大小。原则上栈中有一个指针指向栈顶元素。1、底层基于数组的栈实现:import j原创 2014-03-30 21:34:27 · 3115 阅读 · 0 评论 -
堆排序算法
堆排序算法Javaban原创 2014-06-12 12:11:39 · 768 阅读 · 0 评论 -
插入排序及优化
插入排序是简单排序的一种,也是基于“减治法”思想的一种算法,减治法有3种变形:减去一个常量;减去一个常量因子;减去的规模是可变的。插入排序算法的时间复杂度和冒泡、选择排序算法一样也是o(n²),常见的基于插入排序算法思想的排序算法有:直接插入排序算法;折半插入排序算法;希尔排序算法。(查看)插入的方法一共有三种:原创 2014-04-05 15:21:31 · 3306 阅读 · 0 评论 -
希尔排序算法
描述:希尔排序(查看定义)是直接插入排序的一种扩展算法,对于一个有序序列或者基本有序序列,要在插入一个较小的元素的时候就要从后向前(查看原因)不断的移动,如果序列是相当大的,这种移动是十分耗时的。改进的办法就是将每次从后向前移动的步长增大,这样移动比较的次数就会大大的减少。步长的计算一般由公式:h = 3*h+1算出,步长由大逐渐减少至1,当减到1的时候,也就是一般的直接插入排序了,但这个时候序列是相对有序的,保证了相对较小的元素不会出现在序列的最后面,从而减少了移动的次数。原创 2014-04-05 15:38:48 · 1223 阅读 · 0 评论 -
快速排序
快速排序最好时间复杂度O(nlgn),平均时间复杂度O(nlgn),最坏的时间复杂度O(n²)(极少出现),辅助空间O(lgn),是不稳定的排序算法。与归并排序一样,快速排序也使用分治思想,对数组A[ p...r ] 进行快速排序的三步分治过程:分解:数组A[p...r]被划分为两个(可能为空)的子数组A[p...q-1]和A[q+1...r],使得A[ p ...q-1]中的每一个元素都小于等于A[q],而A[q]也小于等于A[q+1...r]中的每一个元素解决:通过递归调用快速排序,对子数组A[p原创 2014-06-12 11:59:49 · 1007 阅读 · 0 评论 -
斐波那契数列累加求前n项和
斐波那契累加求前n项和写一个斐波那契求和的算法,第一反应太简单了,递归一下就求出来了常规的方法:原创 2014-05-18 20:13:42 · 18849 阅读 · 0 评论