08 2014 档案

摘要:一、 分类描述1. 插入排序 直接插入排序:算法简单,稳定,适用于数据量小的情况 希尔排序:直接插入排序的改进版,不稳定,对于待排序序列的不同情况效率相近2. 交换排序 冒泡排序:算法简单,稳定,在数据基本有序的情况下效率较高 快速排序:算法效率高,不稳定,需要额外的辅助空... 阅读全文
posted @ 2014-08-31 21:59 Sai18 阅读(338) 评论(0) 推荐(0)
摘要:基数排序是一种数据格式相关的算法,适用范围有限,当数据位数较小时,基数排序法的时间复杂度近似为O(n),效率高于其它的稳定性排序算法。1. 算法思想 以十进制数为例,现将元素按个位出入一次基数桶,再按十位出入基数桶……直至按最高位出入基数桶,此时序列整体有序。2. 时间复杂度 最好情况... 阅读全文
posted @ 2014-08-31 20:47 Sai18 阅读(265) 评论(0) 推荐(0)
摘要:归并排序是一种使用分治策略的排序算法,适用于待排序列整体无序、部分有序的情况。1. 算法思想 递归地将待排序列等分为两个子序列,直到子序列有序(狭义得讲就是只有一个元素),再将两个子序列合并为一个新的有序序列。2. 时间复杂度 最好情况 O(nlogn):用递归树思想,每次递归划分合并... 阅读全文
posted @ 2014-08-31 20:17 Sai18 阅读(292) 评论(0) 推荐(0)
摘要:堆排序也是一种选择排序,对序列的原始顺序不敏感,适用于数据量大的情况。1. 算法思想 堆:子节点的值总是小于/大于它的父节点。这里使用的是最大堆。 将数组转化为最大堆,依次将对顶元素取出,与堆中最后一个元素交换,堆长度减一,对堆作调整;如此循环至堆为空,最后得到一个元素由小到大排列的... 阅读全文
posted @ 2014-08-31 17:35 Sai18 阅读(335) 评论(0) 推荐(0)
摘要:直接选择排序最好最坏情况时间复杂度均为O(n^2),不稳定,其优势在于最多只需交换n次,交换操作比比较操作耗时。1. 算法思想 从待排序序列中选择最小的元素,放入有序序列的末尾;如此循环直至待排序序列为空。2. 时间复杂度 最好情况 O(n^2):序列正序有序,无需交换元素,但比较时间... 阅读全文
posted @ 2014-08-31 16:24 Sai18 阅读(418) 评论(0) 推荐(0)
摘要:快速排序是交换排序的一种,算法效率高,需要额外的辅助空间1. 算法思想 从待排序序列中选取一个元素,以其值作为中间值,把比其小的元素放到左边,比起大的元素放到右边;然后递归地对左、右部分排序,直至每一部分元素个数为1,整个序列有序。2. 时间复杂度 用递归树的思想,每次划分操作的元素... 阅读全文
posted @ 2014-08-31 11:36 Sai18 阅读(239) 评论(0) 推荐(0)
摘要:冒泡排序是一种选择排序,算法简单,在数据基本有序的情况下效率较高。1. 算法思想 通过无序区中元素相邻元素的比较和交换,使最小的元素如同气泡一般浮动至顶端。2. 时间复杂度 最好情况 O(n):序列正序有序,外循环只执行一次,内层比较n次,不需移动元素(针对改进版而言) 最坏情况... 阅读全文
posted @ 2014-08-31 08:49 Sai18 阅读(205) 评论(0) 推荐(0)
摘要:希尔排序是直接插入排序的改进版,对于待排序序列的不同情况效率相近。 1. 算法思想 先选取一个小于n的增量d1,把序列中所有元素分成n/d1个组,所有距离为d1的倍数的元素在同一组中,在各组内执行直接插入排序。然后选取一个更小的增量d2,重复上述分组和排序过程;继续减小增量,直至增量为1,即所有元素 阅读全文
posted @ 2014-08-30 13:30 Sai18 阅读(212) 评论(0) 推荐(0)
摘要:直接插入排序是插入排序的一种,算法简单,适用于数据量小的情况。1. 算法思想 每次从待排序序列中取出一个元素k,插入到已经排好序的序列A[0...i]中合适的位置。插入时k依次由后向前比较,小于k的元素后移。2. 时间复杂度 最好情况 O(n):序列正序有序,只需比较n次,不需移动元素... 阅读全文
posted @ 2014-08-30 12:32 Sai18 阅读(144) 评论(0) 推荐(0)