
算法
文章平均质量分 65
liminlimin_limin
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
插入排序算法
主要思想:在已经排好序的子数组A[1..i-1]中,插入元素A[i],形成排好序的子数组A[1..i]。 代码: //插入排序——最形象的事例:打纸牌 #include #include using namespace std; int main() { //接收排序数据 vector sort_data; float data; while ((cin>>data)&&(da原创 2013-09-29 19:43:09 · 565 阅读 · 0 评论 -
合并排序算法
主要思想:不断将已经有序的子数组A[p..q]和A[q+1..r]合并为新的有序的数组A[p..r]。具体过程可如下操作: 分解:将n个元素分成各含n/2个元素的子序列; 解决:对两个子数组递归地排序; 合并:合并两个已经有序的子数组得到最终的有序数组。 代码: //合并/归并排序——分原创 2013-09-29 19:58:19 · 684 阅读 · 0 评论 -
堆排序
1、主要思想: 对数组每一次建最大堆(分别对子树进行建最大堆)可以保证最大数据是第一个元素,每次获取最大数据后,将最大数据删除(与最后一个数据交换,整个数组长度减1),对新的数组重新建堆,依次执行到所有的数据均显示完成。 2、代码: //堆排序 #include #include using namespace std; void max_heap(vector &da原创 2013-10-20 14:40:31 · 515 阅读 · 0 评论 -
快速排序
1、主要思想: 利用分治策略,将数组A[l..r]划分成两个子数组A[l..q-1]和A[q+1..r],使得A[l..q-1]中的每一个元素小于等于A[q],A[q+1..r]中的每一个元素大于A[q],再通过递归调用快速排序算法对子数组A[l..q-1]和A[q+1..r]排序,递归处理后的数组A[l..r]即为已排序的数组。 2、代码: //快速排序——分治策略 #inc原创 2013-10-20 16:46:11 · 492 阅读 · 0 评论 -
计数排序
1、主要思想: 借助一个中间数组data_b来保存data数组中任意小于或等于data[i]元素的个数,以此来定位data[i]在数组中的位置(按大小排序的第几位)。该过程中不存在任意两个数之间的比较。 2、代码: //计数排序 #include #include using namespace std; void count_sort(vector data,int原创 2013-10-23 19:42:23 · 551 阅读 · 0 评论 -
基数排序
/** 利用基数排序算法排序数组A= **/ /**************************************************************************** 基数排序核心思想: 将每一个元素拆分按位从低到高来处理,对每一位的处理过程依赖稳定的中间排序算法, 如:计数排序等。其时间复杂度也基于中间排序算法,能在O(n)时间内完成。 ***********原创 2013-10-23 22:31:35 · 647 阅读 · 0 评论 -
最长回文字符串
第一次接触回文字符串是在原创 2014-05-05 22:10:10 · 691 阅读 · 0 评论