algorithms
wmmhello
这个作者很懒,什么都没留下…
展开
-
快速排序_quick_sort
#include #include #include using namespace std; /* 交换两个数 */ void exchange(int &x, int &y) { int temp = x; x = y; y = temp; } /* 将数组data中的[left, right]中的数据以data[right]为界划分为左右两部分 */ int parti原创 2014-02-20 22:23:05 · 491 阅读 · 0 评论 -
牛顿迭代法求方根
牛顿迭代法的原理为: X2 = X1 - f(x1)/f`(x1)另f(x1) = x^2-a; 得到 x2 = x1-(x1^2 - a)/(2*x1) = 0.5(x1+a/x1); 设一个初始的x1,不断迭代找到两次结果之间差值满足一定条件时,即可停止。 具体代码:const float EPS = 0.00001; int sqrt(double x) { if(x ==原创 2016-03-12 13:25:42 · 661 阅读 · 0 评论 -
次方编程
求一个数的n次方1、C语言最小整数在程序语言中不是-2^31,^是异或运算。 最小整数为((unsigned int)(-1) >> 1) + 1); 举例8位: -1=11111111 (unsigned int)(-1) >> 1) = 01111111 为最大整数 01111111 + 1 = 10000000原创 2016-03-12 12:12:59 · 919 阅读 · 0 评论 -
最长公共子串
public static void main(String[] args) { // try { // BufferedReader strin=new BufferedReader(new InputStreamReader(System.in)); // System.out.print("请输入一个字符串原创 2014-10-07 20:18:13 · 409 阅读 · 0 评论 -
最长回文子序列 递归算法
public static void main(String[] args) { // try { // BufferedReader strin=new BufferedReader(new InputStreamReader(System.in)); // System.out.print("请输入一个字符串原创 2014-10-07 19:51:20 · 570 阅读 · 0 评论 -
Catalan数
什么是Catalan数 说到Catalan数,就不得不提及Catalan序列,Catalan序列是一个整数序列,其通项公式是我们从中取出的就叫做第n个Catalan数,前几个Catalan数是:1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670转载 2014-09-05 15:52:37 · 448 阅读 · 0 评论 -
折半查找Binary_Search
折半查找的结果:high 比 low 小 1,插入的位置为 high + 1 #include #include int BinarySearch(int data[], int length, int key) { int flag = -1; int low = 0, high = 9; while(low <= high) { int middle = (low + hi原创 2014-02-20 22:26:15 · 464 阅读 · 0 评论 -
堆排序_heap_sort
#include #include #include using namespace std; class DataType:public vector { public: int heapSize; DataType():heapSize(0){}; ~DataType(){}; protected: private: }; /* 将index为结点的子树调整为最大堆,保持原创 2014-02-15 09:55:27 · 471 阅读 · 0 评论 -
合并排序_merge_sort
#include #include #include #define ARRAY_LEN 16 #define START 0 #define END 15 using std::vector; void Merge(int *data, const int start, const int middle, const int end) { //求前后两段数组的长度 const in原创 2014-02-13 18:37:11 · 582 阅读 · 0 评论 -
插入排序 insertion_sort
#include #include #define ARRAY_LEN 9int main(){int data[] = {23,4,12,65,32,5,24,544,324}; for (int i = 1; i = 0 && data[j] > key) //依次比较{data[j + 1] = data[j];j--;}data[j + 1] = key; //插入正确的位置}for(原创 2014-02-13 11:43:36 · 430 阅读 · 0 评论 -
二叉排序树的操作_BinaryOrderTree
函数传参时,判断应传入指针还是指针的指针的依据:如果程序中不改变指针本身的值,只改变指针指向的值时传 *;如果程序中会改变指针本身的值则传 ** #include #include #include using namespace std; #define DATATYPE int typedef struct NODE { DATATYPE data; //数据元素字段原创 2014-02-22 15:29:44 · 474 阅读 · 0 评论 -
求一个整数是否可以被3整除
使用二进制方式验证,由于3的二进制位00000011,所以假设b=3*a; 那么b的二进制的最低位即为a的最低位,a的次低位加上最低位即为b的次低位,依次类推, 1 1 0 0 1 1 1 1 0 0 1 1 0 0 1 0 0 1 0 0 代码如下:bool IsTimesOf3(int data, int* result)原创 2016-03-13 15:25:07 · 581 阅读 · 0 评论