算法设计与应用
文章平均质量分 67
数据结构、算法基础知识,算法的设计与应用
haozlee
多年linux开发经验,熟悉c++,python。个人主页:https://leehao.me
展开
-
递归实现合并两个有序链表
Node* mergAction(Node* head1,Node *head2) { Node *p=NULL; if(head1==NULL&&head2==NULL) return p; else if(head1==NULL) return head2; else if(head2==NULL)原创 2010-12-29 11:08:00 · 1445 阅读 · 0 评论 -
合并排序
合并排序使用了“分治法”的策略。“将原问题划分成n个规模较小而结构与原问题相似的子问题;递归地解决这些子问题;然后合并其结果,就得到原问题的解。”这就是分治策略。分治策略在每一层递归上有以下三个步骤:1)分解:将原问题分解成一系列子问题;2)解决:递归地解各子问题;3)合并:将子问题的解合并成原问题的解。 合并排序依照上述策略:1)分解:将n个元素分成两个含n/2个原创 2011-02-10 20:07:00 · 1662 阅读 · 2 评论 -
堆排序
堆排序是一种选择排序算法,但它效率优于直接选择排序,其运行时间为O(nlogn);而且它是一个原地排序算法,需要的空间为O(1)。/*将“堆”看成一棵完全二叉树,用数组存放元素。 *数组从下标为1开始存放元素。 *堆排序是一种“原地”排序算法,其操作均在原数组A[]中进行。 */#include using namespace std;void display(int A[],原创 2011-02-10 23:43:00 · 905 阅读 · 0 评论 -
求最大最小值的O(3n/2)算法
《算法导论》上面第九章开章的算法,简单。貌似《编程之美》上面也有。#include #include //time(0)#include //rand()#include using namespace std;const int MAX_VECTOR_SIZE = 10;int main(){ vector iVec; /*生成随机的一组数*/原创 2011-03-02 16:42:00 · 2431 阅读 · 0 评论 -
字符串的全排列
《程序员面试攻略(第二版)》中第七章的一道题目。题目是这样子的:实现一个例程,打印出一个字符串字符的所有可能顺序,即,打印这个字符串中所有字符的全排列。将输入字符串中每个字符作为一个独立的字符,即使它们发生重复。对于字符串”aaa”,您的例程应该打印出6个”aaa”。递归思想可以解决。其算法的主要思路如下:如果超过了最后一个位置 打印这个字符串 返回原创 2011-10-13 10:52:24 · 1509 阅读 · 0 评论