
算法与数据结构
文章平均质量分 64
qs9816
这个作者很懒,什么都没留下…
展开
-
算法导论中快速排序的三步分治实现
解析过程,以后再补充。import randomdef partition(arr, l, r): x = arr[r] i = l - 1 j = l while j <= r - 1: if arr[j] <= x: i = i + 1 arr[i], arr[j] = arr[j], a原创 2016-06-06 23:03:28 · 364 阅读 · 0 评论 -
insertsort
#include void insertsort(int *arr, int length) { for (int i = 1; i != length; i++) { int newvalue = arr[i]; int pos = i; while (pos > 0 && newvalue < arr[pos - 1]) { arr[pos] =原创 2013-05-29 01:06:00 · 540 阅读 · 0 评论 -
BinaryTree
#include #include templatestruct BTNode { T data; BTNode *leftchild, *rightchild; BTNode(): leftchild(NULL), rightchild(NULL) {} BTNode(T x, BTNode *l = NULL, BTNode *r = NULL) : data(原创 2013-05-22 18:36:12 · 533 阅读 · 0 评论 -
BinarySearchTree
#include #include templatestruct BSTNode { E data; BSTNode *left, *right; BSTNode(): left(NULL), right(NULL) {} BSTNode(const E d, BSTNode *l = NULL, BSTNode *r = NULL) : data(d), left原创 2013-05-22 18:37:19 · 506 阅读 · 0 评论 -
LinkedList
#ifndef LINKEDLIST_H#define LINKEDLIST_H#include #include #ifndef INS_FRONT_OR_REAR#define INS_FRONT_OR_REARenum INS_MOD { INS_FRONT, INS_REAR };#endiftemplatestruct LinkedNode { T data;原创 2013-05-08 00:49:16 · 538 阅读 · 0 评论 -
LinkedStack
栈的链式存储结构称为链栈。1、链栈的类型定义 链栈是没有附加头结点的运算受限的单链表。栈顶指针就是链表的头指针. 链栈的类型说明如下: typedef struct stacknode{ DataType data struct stacknode *next }Stack原创 2013-04-30 00:36:33 · 634 阅读 · 0 评论 -
几个排序
#include using namespace std;int main() {}void selectsort(int *arr, int n) { int i, j, min, temp; for (i = 0; i < n - 1; i++) { min = i; // find the min for (j = i + 1; j < n; j+原创 2013-04-30 23:34:37 · 455 阅读 · 0 评论 -
SeqStack
栈的顺序存储结构简称为顺序栈,它是运算受限的顺序表。1、 顺序栈的类型定义 #define StackSize 100 //假定预分配的栈空间最多为100个元素 typedef char DataType;//假定栈元素的数据类型为字符 typedef struct{ DataType data[StackSize]; int top; }原创 2013-04-29 22:43:09 · 3443 阅读 · 0 评论 -
链表相关函数
void reverse(Node* pHead) { if (pHead) { if (pHead->next) { reverse(pHead->next); } printf("%d",pHead->data); } } voi原创 2013-05-01 21:09:45 · 428 阅读 · 0 评论 -
queue
顺序队列 1、顺序队列 (1)顺序队列的定义 队列的顺序存储结构称为顺序队列,顺序队列实际上是运算受限的顺序表。(2) 顺序队列的表示 ①和顺序表一样,顺序队列用一个向量空间来存放当前队列中的元素。 ②由于队列的队头和队尾的位置是变化的,设置两个指针front和rear分别指示队头元素和队尾元素在向量空间中的位置,它们的初值在队列初始化时均应置为0。原创 2013-05-01 19:43:01 · 702 阅读 · 0 评论 -
PQueue
#include #include #include const int DEFAULT_PQ_SIZE = 50;templateclass PQueue {public: PQueue(int sz = DEFAULT_PQ_SIZE); ~PQueue() { delete[] elems; } bool insert(const T& x); bool re原创 2013-05-23 18:32:50 · 803 阅读 · 0 评论 -
MinHeap
#include const int DEFAULT_SIZE = 20;templateclass MinHeap {public: MinHeap(int sz = DEFAULT_SIZE); MinHeap(T arr[], int n); ~MinHeap() { delete[] heap; } bool insert(const T& x) const;原创 2013-05-23 18:33:48 · 971 阅读 · 0 评论 -
AVL树及旋转
// LL 右旋 void rotatedLL(AVLNode *& k2) { AVLNode *k1 = k2->left; k2->left = k1->right; k1->right = k2; k2->height = max(height(k2->left), height(k2->right)) + 1; k1->height = max原创 2013-06-18 00:02:42 · 518 阅读 · 0 评论 -
图的表示
邻接矩阵// AdjMatrix_Graph.cxx#include #define MAX_VERTEX_NUM 100typedef char VertexType;typedef int EdgeType;typedef struct _Matrix_Graph { VertexType vertexs[MAX_VERTEX_NUM]; // vertex lis原创 2013-06-11 23:25:47 · 457 阅读 · 0 评论 -
BinarySearch
int binarySearch(int[] arr, int value, int left, int right) { if (left > right) return -1; int middle = low + (high - low) / 2; if (arr[middle] == value) return middle;原创 2013-05-28 00:02:34 · 510 阅读 · 0 评论 -
selectsort
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一原创 2013-05-12 20:13:20 · 864 阅读 · 0 评论 -
mergesort
归并操作归并操作(merge),也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作。归并排序算法依赖归并操作。算法描述:归并操作的过程如下:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列设定两个指针,最初位置分别为两个已经排序序列的起始位置比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置重复步骤3直到某一指针原创 2013-05-07 00:51:09 · 452 阅读 · 0 评论 -
mergesort
public class Test { public static void main(String[] args) { // TODO Auto-generated method stub int[] arr = { 3, 11, 23, 10, 9, 111, 298, 90, 190, 19 }; mergeSort(arr); for (int i = 0; i原创 2013-05-26 23:17:37 · 473 阅读 · 0 评论 -
LinkedStack, LinkedQueue
// LinedStack#include #include templatestruct StackNode { T data; StackNode *link; StackNode(T d = 0, StackNode *next = NULL) : link(next), data(d) {}};templateclass LinkedStack {原创 2013-05-10 23:03:28 · 588 阅读 · 0 评论