随笔分类 -  算法与数据结构

基本数据结构
摘要:本章讲述了栈、队列、树、指针、对象的基本实现。boring AND difficult!!!(1) 栈概念定义:栈属于动态集合,采用先进后出策略(LIFO)。基本操作是压入(PUSH)和弹出(POP)。如果s.top=0,表示栈空,如果试图对空栈进行POP操作会发生下溢(underflow)。如果s... 阅读全文

posted @ 2015-02-23 12:33 蓝 鸟 阅读(162) 评论(0) 推荐(0)

小节
摘要:算法导论已学两部分,第一部分是基础知识,第二部分是排序。基础知识介绍如何分析证明算法以及求时间复杂度。第二部分的排序学了很长时间。先是从简单排序到复杂排序的一个过渡,打开了很多思路。然后就是无尽的算法分析。算法分析的时间比理解算法的时间要长得多,特别是后面几章算时间复杂度时使用概率时,所用的数学知识... 阅读全文

posted @ 2015-02-13 21:37 蓝 鸟 阅读(135) 评论(0) 推荐(0)

顺序统计量
摘要:在一个由n个元素组成的集合中,第i个顺序统计量是该集合中第i小的元素。输入:一个包含n个(互异的)数的集合A和一个整数i,1 2 int RANDOMZED_SELECT(int A[],int p,int r,int i){ 3 int q,k; 4 if(p==r) 5 ... 阅读全文

posted @ 2015-02-13 21:32 蓝 鸟 阅读(462) 评论(0) 推荐(0)

线性时间排序
摘要:之前所学的排序都是基于比较的,通过两数的比较得出数的大小顺序,基于比较的算法最优的时间复杂度为n*lg(n)。而计数排序采用了另一种方式,没有比较,让人眼前一亮。但需要特定的环境下才能行。比如输入数组需要是0~k之间的整数。但他至少让排序能在线性时间O(n)内完成。基数排序弥补了计数排序排列大数时需... 阅读全文

posted @ 2015-01-31 03:21 蓝 鸟 阅读(268) 评论(0) 推荐(0)

快速排序
摘要:快速排序的平均性能较好,为原址排序,时间复杂度为T(n)=n*lg(n).#includeint PARTITION(int A[],int p,int r){ int i,j,x,t; i=p-1; x=A[r]; for(j=p;j<r;j++) if(A[... 阅读全文

posted @ 2015-01-27 02:16 蓝 鸟 阅读(122) 评论(0) 推荐(0)

堆排序 Heapsort
摘要:堆排序:由三个函数组成:Max_heapify ( int A[] ,int i ,int heap_size)//堆化 T(n)=log(n);Build_max_heap(int A[],int heap_size)//建堆 T(n)=n ;Heap_sort(int A[],int le... 阅读全文

posted @ 2014-09-04 03:12 蓝 鸟 阅读(202) 评论(0) 推荐(0)

大数阶乘
摘要:一个头疼的程序;计算100以内的阶乘。这是我的程序,可计算10000以内的阶乘: 1 /*Small factorials*/ 2 3 #include 4 int fact(int n); 5 void print(int len); 6 7 int F[200]; 8 9 int mai... 阅读全文

posted @ 2014-07-21 00:13 蓝 鸟 阅读(327) 评论(0) 推荐(0)

Strassen矩阵乘法
摘要:Strassen矩阵乘法是通过递归实现的,它将一般情况下二阶矩阵乘法(可扩展到n阶,但Strassen矩阵乘法要求n是2的幂)所需的8次乘法降低为7次,将计算时间从O(nE3)降低为O(nE2.81)。矩阵C = A*B,可写为C11 = A11B11 + A12B21C12 = A11B12 + ... 阅读全文

posted @ 2014-07-12 23:59 蓝 鸟 阅读(979) 评论(2) 推荐(1)

最大子数组
摘要:/*求子数组的最大和题目描述:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, ... 阅读全文

posted @ 2014-07-11 12:15 蓝 鸟 阅读(157) 评论(0) 推荐(0)

斐波那契数列
摘要:斐波那契数列的几种不同的算法实现: 1 #include "stdio.h" 2 #include "math.h" 3 4 5 int Fibonacci1(int n,int acc1,int acc2)//另一种新的递归方法T(n)=O(n) 6 { 7 if(n==0)retur... 阅读全文

posted @ 2014-07-04 23:57 蓝 鸟 阅读(197) 评论(0) 推荐(0)

在归并排序中对小数组采用插入排序
摘要:1 #include 2 void insertsort(int *A,int p,int r){ 3 //插入排序 4 int i,j,k; 5 for(i=p;ip&&j<A[k-1]){ 8 A[k]=A[k-1]; 9 ... 阅读全文

posted @ 2014-07-03 23:57 蓝 鸟 阅读(892) 评论(1) 推荐(0)

简单递归练习
摘要:1 #include 2 //#include 3 int jiecheng(int i){ 4 //①算n! 5 if(i==1)return 1; 6 return i*jiecheng(i-1); 7 } 8 int Fibonacci(int i){ 9 /... 阅读全文

posted @ 2014-07-02 16:52 蓝 鸟 阅读(236) 评论(0) 推荐(0)

归并排序
摘要:1 #include 2 void MERGE(int *A,int p,int q,int r){ 3 int i,j,k; 4 int *B=malloc((r-p+1)*sizeof(int)); 5 i=p;j=q+1;k=0; 6 while(i<=q&&... 阅读全文

posted @ 2014-07-01 22:01 蓝 鸟 阅读(187) 评论(2) 推荐(0)

导航