算法设计
青青小禾
这个作者很懒,什么都没留下…
展开
-
字符串表示 大数相乘
void multiply_1(char number1[],char number2[]){ int len1=0,len2=0;char *p1=number1,*p2=number2;while (*p1++){len1++;}while (*p2++){len2++;}p1=NULL;p2=NULL;coutfor (int原创 2014-10-23 13:33:19 · 535 阅读 · 0 评论 -
定义栈的数据结构,要求添加一个 min 函数,能够得到栈的最小元素。要求函数 min、push 以及 pop 的时间复杂度都是 O(1)。
#include "stdafx.h"#include #include#include #include #include #include using namespace std;#include #include #include // BSTreeNode1.cpp : 定义控制台应用程序的入口点。//template class StackWithMin{原创 2014-11-04 13:30:55 · 650 阅读 · 0 评论 -
KMP算法
int kmp(char S[],char T[],int Next[],int S_length,int T_length){int i=0;int j=0;while (i<S_length&&j<T_length){if (j==-1||S[i]==T[j]){i++;j++;}else{j=Next[j];}}if (j>=T_length){retur原创 2014-11-04 13:29:38 · 312 阅读 · 0 评论 -
/堆排序 2014年8月27日 13:31:49
//堆排序//交换两个值void swap(int *a,int *b){*a=*a^*b;*b=*a^*b;*a=*a^*b;}//调整堆 大顶堆void adjustHeap(int *a,int size,int i){if (i>size/2) //如果不是非终端结点{return;}int max_index=i;int leafChild=2*i;原创 2014-11-04 13:29:39 · 401 阅读 · 0 评论 -
直接插入排序
void display(int a[],int len){for (int i=0;i<len;i++){cout<<a[i]<<" ";}cout<<endl;}bool com(int a,int b){return a>=b?1:0;} void StraightInsertSort(int a[],bool(*com)(int,int),int len) {原创 2014-11-04 13:27:12 · 735 阅读 · 0 评论 -
快速排序
int Sort(int a[],int low,int high){int mid_axis=a[low]; //中轴的值while(low<high){while(low=mid_axis){high--;} a[low]=a[high]; while(low<high&&a[low]<=mid_axis){low++;} a[high]=a[l原创 2014-11-04 13:28:20 · 278 阅读 · 0 评论 -
图的创建 深度优先遍历 广度优先遍历
struct ArcNode {int headVex,tailVex; //头尾顶点ArcNode *headIN,*tailOut;int weight; }; struct VexNode {int data;ArcNode *firstIN,*firstOUT; }; struct Graphic {int vexNum,arcNum; //顶点和弧个原创 2014-11-04 13:26:24 · 478 阅读 · 0 评论 -
题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个 子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为 O(n)。
int main(){int a[8]={-1,-2,-3,-10,-4,-7,-2,-5};int sum=0;int GreateSum=0;for (int i=0;i<8;i++){sum+=a[i];if (sum<0){sum=0;}if (sum>GreateSum){GreateSum=sum;}}if (GreateSum==0){for原创 2014-11-04 13:31:01 · 4095 阅读 · 0 评论