随笔分类 -  算法与数据结构

摘要:404 /home.do 阅读全文
posted @ 2015-02-10 11:48 风过无痕的博客 阅读(2037) 评论(0) 推荐(0) 编辑
摘要:【链表】 是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。 由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多, 但是查找一个节点或者访问特定编号的节点则需要O(n)的时间, 而顺序表相... 阅读全文
posted @ 2015-02-09 20:30 风过无痕的博客 阅读(409) 评论(0) 推荐(0) 编辑
摘要:它是用一个散列函数把关键字 映射到散列表中的特定位置。 在理想情况下,如果元素e 的关键字为k,散列函 数为f,那么e 在散列表中的位置为f (k)。要搜索关键字为k 的元素,首先要计算出f (k),然后看 表中f (k)处是否有元素。如果有,便找到了该元素。如果没有,说明该字典中不包含该元素... 阅读全文
posted @ 2015-02-09 20:23 风过无痕的博客 阅读(219) 评论(0) 推荐(0) 编辑
摘要:快速排序使用分治法策略来把一个序列分为两个子序列 算法步骤: 1. 从数列中挑出一个元素,称为 "基准"(pivot) 2. 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面 (相同的数可以到任一边)。在这个分割结束之后,该基准就处于数列的中间位置。这个称为分割(partition)操作 3. 递归地(recursive)把小于基准值元素的... 阅读全文
posted @ 2015-02-09 20:21 风过无痕的博客 阅读(207) 评论(0) 推荐(0) 编辑
摘要:算法步骤: 1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 3. 针对所有的元素重复以上的步骤,除了最后一个。 4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 public static void bubbleSort(... 阅读全文
posted @ 2015-02-09 20:16 风过无痕的博客 阅读(178) 评论(0) 推荐(0) 编辑
摘要:算法步骤: 1. 未排序序列中找到最小元素,存放到排序序列的起始位置 2. 再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾 3. 以此类推,直到所有元素均排序完毕 比较复杂度:n(n-1)/2 交换(赋值)复杂度:n-1 优点:相比冒泡排序来讲,交换的次数减少了 缺点:相对快速排序,比较次数仍然是n² public static void... 阅读全文
posted @ 2015-02-09 20:12 风过无痕的博客 阅读(176) 评论(0) 推荐(0) 编辑
摘要:合并算法,指的是将两个已经排序的序列合并成一个序列的操作 操作步骤: 1. 建立一个数组C用来存放合并后的数 2. 从数组A和数组B的首端开始比较,将大的元素放入C中 3. 重复2操作,直至其中一个数组的元素被用完,则将另一个数组中剩余的元素拷贝到C中 比较复杂度:n㏒n 交换(赋值)复杂度:n㏒n 优点:比较快速的排序算法 缺点:需要额外的空间存放临... 阅读全文
posted @ 2015-02-09 20:08 风过无痕的博客 阅读(217) 评论(0) 推荐(0) 编辑
摘要:算法步骤: 1.从第一个元素开始,该元素可以认为已经被排序 2.取出下一个元素a,在已经排序的元素序列中从后向前扫描 3.如果已排序中的元素b大于a,则将元素b后移一个位置 4.重复步骤3,直到找到已排序的元素x小于或者等于元素a 5.将元素a插入到x的后面 6.重复步骤2~5 public static void insertionSort(Intege... 阅读全文
posted @ 2015-02-09 20:06 风过无痕的博客 阅读(209) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示