算法编程
既然如此
这个作者很懒,什么都没留下…
展开
-
排序算法_快速排序、随机快速排序
//------------------------快速排序--------------------------int Partion(int a[],int low,int high) //找出分割位置{ int key; key=a[low]; while(low {原创 2013-08-27 21:33:46 · 710 阅读 · 0 评论 -
C#与数据结构--树论--红黑树(RED BLACK TREE)
C#与数据结构--树论--红黑树(RED BLACK TREE) 介绍今天我们来介绍另一种平衡二叉树:红黑树(Red Black Tree),红黑树由Rudolf Bayer于1972年发明,当时被称为平衡二叉B树(symmetric binary B-trees),1978年被Leonidas J. Guibas 和 Robert Sedgewick改成一个比较摩登的名字:红黑树转载 2013-10-23 16:50:19 · 2029 阅读 · 0 评论 -
算法编程_红黑树(RBTree)
RBtree.h:#ifndef _RBTREE_H_INCLUDED#define _RBTREE_H_INCLUDEDenum RBtree_color_type { RBtree_red, RBtree_black };templatestruct RBtree_node { typedef RBtree_color_type Color_type; typedef原创 2013-10-22 19:40:08 · 1121 阅读 · 0 评论 -
hash表算法超强解析
说明:本文分为三部分内容, 第一部分为一道百度面试题Top K算法的详解;第二部分为关于Hash表算法的详细阐述;第三部分为打造一个最快的Hash表算法。第一部分:Top K 算法详解问题描述(百度面试题):搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。假设目前有一千万个记录(这些查询串的 重复度比较高,虽然总数是1千转载 2013-10-08 19:00:30 · 1633 阅读 · 0 评论 -
队列
"slist.h"#ifndef _SLIST_H_INCLUDED#define _SLIST_H_INCLUDED#include templatestruct Slist_node { T element; Slist_node* next; Slist_node() : element(), next(0) {} explicit Slist_node(const原创 2013-09-02 17:26:01 · 685 阅读 · 0 评论 -
栈
stack.h slist.h(见队列)#ifndef _STACK_H_INCLUDED#define _STACK_H_INCLUDED#include "slist.h"templateclass Stack {public: Stack() : hb_slist() {} ~Stack() {} bool empty() const { return hb原创 2013-09-02 17:58:56 · 705 阅读 · 0 评论 -
排序算法_插入排序、归并算法
//---------------------归并算法-------------------------templatevoid merge(T a[],int p, int q , int n){int n1=q-p+1;int n2 = n-q;int *l=new int[q-p+1];int *r=new int[n-q];for(int i原创 2013-08-27 17:25:49 · 746 阅读 · 0 评论 -
双向链表
#include #include "dlist.h"int main()//测试程序{ Dlist dlist; int i=dlist.size(); std::cout<<i<<std::endl; dlist.push_back(2); for (int j1=0; j1<dlist.size(); ++j1) std::cout<<dlist.value(j1+原创 2013-08-29 08:42:32 · 733 阅读 · 0 评论 -
排序算法_堆排序(最大堆、最小堆)
//*****************************************void swap(int &a,int &b){ a=a+b; b=a-b; a=a-b;}void Heapify(int a[],int k,int m) //整理堆{ int k1=2*k; int k2=2*k+1; i原创 2013-08-27 21:37:07 · 881 阅读 · 0 评论 -
排序算法_计数排序
//-----------counting_sort------------------templatevoid counting_sort(T a[],T b[],int k,int size){int *c = new int [k+1];for(int i =0;i{c[i]=0;}for(int j=0;j{c[a[j]]=c[a[j]]+1;原创 2013-08-28 10:31:19 · 708 阅读 · 0 评论 -
找数组中第i小的元素
//----------------找数组中第i小的元素---------------------templateint randomized_select(T a[],int p,int r,int i){if(p==r)return a[p];int q = randomized_partition(a,p,r);int k = q-p+1;if(i==k)原创 2013-08-28 10:54:51 · 802 阅读 · 0 评论 -
-0-1排序---遗忘比较交换算法
//-----------0-1排序---遗忘比较交换算法--------------------------templatevoid compare_exchange(T a[],int i,int j){if(a[i]>a[j]){exchange(a[i],a[j]);}}templatevoid insertion_sort(T a[],int size){for(int j = 1;j=原创 2013-08-28 15:32:30 · 1574 阅读 · 0 评论 -
KMP字符串匹配
#include using namespace std;int* com(string b){ int len = b.length(); int *pi=new int[len]; pi[0]=0; int k = 0; const char* p = b.c_str(); for (int q=1;q<len;q++) { while (k>0&&p[k]!=p[原创 2014-05-25 10:46:57 · 680 阅读 · 0 评论