
数据结构与算法
听泉流浪
人生难得几回搏 此时不搏待何时
展开
-
希尔排序
/***希尔排序****/ #define N 11 #include using namespace std; void BInsertSort(int a[], int len) { size_t dk; for (dk = len / 2; dk > 0; dk /= 2) { for (size_t i = dk + 1; i != len + 1; i++) {原创 2014-05-03 22:21:13 · 462 阅读 · 0 评论 -
二叉树上的各种操作
#define MAXQSIZE 50 #include #include #include using namespace std; typedef char ElemType; typedef struct Node{ ElemType data; struct Node *lchild, *rchild; }BiTNode, *BiTree; typedef stru原创 2014-04-25 22:39:47 · 737 阅读 · 0 评论 -
基于邻接表的图的深度和广度优先搜索遍历
/*****头文件Graph.h**********/ #define MAX_VERTEX 20 #define GQSIZE 20 #include using namespace std; typedef char VertexType; //各个结构体的定义 typedef struct ANode{ int AdjVex; struct ANode *NextArc; }Ar原创 2014-04-29 11:04:13 · 1088 阅读 · 0 评论 -
简单选择排序
/**简单选择**/ #define N 10 #include using namespace std; void SelectSort(int a[], int len) { for (int i = 0; i != len-1; i++) { int min = i; for (int j = i+1; j != len; j++) { if (a[min] >原创 2014-05-11 13:08:26 · 427 阅读 · 0 评论 -
冒泡排序
#define N 10 #include using namespace std; void BubbleSort(int a[]) { for (size_t i = 1; i <= 9; i++) { for (size_t j = 9; j >= i; j--) { if (*(a + j) < *(a + j - 1)) { int temp = *(a原创 2014-05-11 12:59:37 · 435 阅读 · 0 评论 -
归并排序
/**归并**/ #define N 10 #include #include using namespace std; void Merge(int *a, int *b, int i, int m, int n) { int k = i; int j = m + 1; for (; i <= m&&j <= n; k++) { if (a[i] < a[j])b[k] = a[原创 2014-05-11 13:12:11 · 471 阅读 · 0 评论 -
直接插入排序
/**直接插入**/ #include #define N 10 using namespace std; void InsertSort(int a[],size_t len) { for (size_t i = 1; i < len; i++) { int temp = a[i]; for (size_t j = i - 1; j>=0; j--) { if (tem原创 2014-05-11 13:05:55 · 412 阅读 · 0 评论 -
折半插入排序
#define N 11 #include using namespace std; void BInsertSort(int a[],int len) { for (size_t i = 2; i!=len+1; i++) { a[0] = a[i]; size_t low = 1; size_t high = i - 1; while (low<=high) {原创 2014-05-03 22:01:29 · 479 阅读 · 0 评论 -
快速排序
/***快速排序***/ #include #define N 11 using namespace std; int Partition(int a[], int low, int high) { a[0] = a[low]; while (low<high) { while (low=a[0])--high; a[low] = a[high]; while (low<hi原创 2014-05-03 22:17:47 · 498 阅读 · 0 评论 -
堆排序
#include#include#define N 11using namespace std;void HeapAdjust(int a[], int s, int m){int rc = a[s];for (int j = 2 * s; j a[j])break;a[s] = a[j];s = j;}a[s] = rc;}void HeapSort(int a[],int len){for (原创 2014-05-03 22:09:31 · 427 阅读 · 0 评论 -
基数排序
/*****基数排序******/ #define N 10 #define RADIX 10 #include using namespace std; int GetDataPos(int Data, int &pos) //得到一个数的pos位置的值 { int temp = 1; for (int i = 0; i < pos - 1; i++) temp *= 10; re原创 2014-05-03 22:14:24 · 488 阅读 · 0 评论 -
计算几何算法概览——位置关系
一。位置关系: 4.折线段的拐向判断: 折线段的拐向判断方法可以直接由矢量叉积的性质推出。对于有公共端点的线段p0p1 和p1p2,通过计算(p2 - p0) × (p1 - p0)的符号便可以确定折线段的拐向: 若(p2 - p0) × (p1 - p0) > 0,则p0p1在p1点拐向右侧后得到p1p2。 若(p2 - p0) × (p1 - p0) 若(p2 -转载 2014-06-10 09:35:04 · 859 阅读 · 0 评论