算法分析与设计
糖梦梦是女侠
路漫漫其修远兮,吾将上下而求索。
展开
-
【算法分析与设计】顺序查找与折半查找
基础知识 顺序查找(Sequential Search):从表中最后一个记录(或是第一个记录)开始,逐个进行记录的关键字和给定值的比较。若某个记录的关键字和给定值比较相等,则查找成功,找到所查记录;反之,若直至第一个记录(或最后一个记录),其关键字与给定值比较都不等,则表明表中没有所查记录,则查找不成功。 折半查找(Binary Search原创 2014-12-09 15:54:42 · 4213 阅读 · 0 评论 -
逆序对问题
1.定义 设A[1..n]是一个包含n个不同数的数组。如果在iA[j],则称(i, j)为A中的一个逆序对(inversion)。 例如,A=(2, 3,8, 6, 1)的逆序对有(1, 5)、(2, 5)、(3, 4)、(3, 5)、(4, 5)共5个。2.求解给定数组A的逆序对数目 (1)算法思想 通过对归并排序算法(请参原创 2016-07-04 15:46:17 · 1003 阅读 · 0 评论 -
排序算法(4)——冒泡排序
冒泡排序(Bubble Sort)1.传统的冒泡排序算法 (1)算法思想 当进行升序的冒泡排序时,则从后往前,依次比较相邻的两个数,若前面的数大于后面的数,则进行交换。第一次循环结束后,待排序序列A[1..n]中的最小元素被交换到A[1]位置。经过n-1次循环,即可完成对A的排序。 若对A=(49, 38, 65, 97, 76原创 2016-07-04 17:29:52 · 1062 阅读 · 0 评论 -
排序算法(1)——插入排序
1.插入排序(Insertion Sort) (1)算法思想 插入排序的思想非常简单,给定待排序的数组A[1..n],依次对数组A的第2个到第n个元素执行插入操作。当对第j个元素(称为关键字,key)进行插入操作时,假设A[1..j-1]已经是有序序列了(前面元素的插入操作已经使之有序),则只需在A[1..j-1]中从后往前搜索,找到第一个小于等于A[j]的原创 2016-07-03 17:41:00 · 876 阅读 · 0 评论 -
排序算法(2)——归并排序
归并排序(Merge Sort) (1)算法思想 归并排序采用了分治策略(divide-and-conquer),就是将原问题分解为一些规模较小的相似子问题,然后递归解决这些子问题,最后合并其结果作为原问题的解。 归并排序将待排序数组A[1..n]分成两个各含n/2个元素的子序列,然后对这个两个子序列进行递归排序,最后将这两个已排序原创 2016-07-03 17:48:08 · 37040 阅读 · 3 评论 -
排序算法(3)——选择排序
(1)算法思想 给定待排序序列A[1..n],首先找出A中最小的元素,将其与A[1]交换;然后找出A中次最小元素,将其与A[2]交换......以此类推,进行n-1次循环,即可找到A中最小的n-1个元素并将其放在对应的位置,最后一个元素自然是最大的元素。由于查找到相应大小的一个元素后就将其放到对应顺序的位置上,因此,查找元素可以按照以下方式进行搜索:查找A中最小元素在A[1..原创 2016-07-04 11:42:21 · 713 阅读 · 0 评论