From d4dca09e4dda171a9d5e04c429899d616b60244c Mon Sep 17 00:00:00 2001 From: carrie17 Date: Wed, 7 Jun 2017 22:56:00 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=8E=92=E5=BA=8F=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 2017-1/luyj/Sort.c | 181 +++++++++++++++++++++++++++++++++++++++++++ 2017-1/luyj/Sort.h | 31 ++++++++ 2017-1/luyj/Sort.png | Bin 0 -> 17816 bytes 2017-1/luyj/s_Sort.c | 50 ++++++++++++ 4 files changed, 262 insertions(+) create mode 100644 2017-1/luyj/Sort.c create mode 100644 2017-1/luyj/Sort.h create mode 100644 2017-1/luyj/Sort.png create mode 100644 2017-1/luyj/s_Sort.c diff --git a/2017-1/luyj/Sort.c b/2017-1/luyj/Sort.c new file mode 100644 index 00000000..47000f70 --- /dev/null +++ b/2017-1/luyj/Sort.c @@ -0,0 +1,181 @@ +#include "Sort.h" + +Bool LT(KeyType a, KeyType b) +{ + if (a < b) + { + return TRUE; + } + else + { + return FALSE; + } +} + +/*=========直接插入排序输出=========*/ +void InsSort(RecordType *r, int length,int *cmp_count,int *mov_count) +{ + RecordType temp; + int i, j; + for (i = 1; i < length; i++) + { + temp = r[i]; + (*mov_count)++; + j = i - 1; + while ((*cmp_count)++,LT(temp.key, r[j].key) && j >= 0) + { + r[j + 1] = r[j]; + (*mov_count)++; + j = j - 1; + } + r[j + 1] = temp; + (*mov_count)++; + } +} + +/*==========希尔排序输出=========*/ +void ShellSort(RecordType *r, int length, int *cmp_count, int *mov_count) +{ + int d = length / 2; + while (d >= 1) + { + ShellInsert(r, length, d, cmp_count, mov_count); + d = d / 2; + } +} +void ShellInsert(RecordType *r, int length, int delta, int *cmp_count, int *mov_count) +{ + RecordType temp; + int i, j; + for (i = delta; i < length; i++) + { + if ((*cmp_count)++,LT(r[i].key, r[i-delta].key)) + { + temp = r[i]; + (*mov_count)++; + for ((*cmp_count)++,j = i-delta; j >= 0 &<(temp.key , r[j].key); j -= delta) + { + r[j + delta] = r[j]; + (*mov_count)++; + } + r[j + delta] = temp; + (*mov_count)++; + } + + } +} + + +/*=========冒泡排序输出=========*/ +void BubbleSort(RecordType *r, int length, int *cmp_count, int *mov_count) +{ + RecordType temp; + int i, j; + Bool change = TRUE; + for (i = 0; i < length && change; i++) + { + change = FALSE; + for (j = 0; j < length-i-1; j++) + { + if ((*cmp_count)++,LT(r[j+1].key, r[j].key)) + { + temp = r[j]; + r[j] = r[j+1]; + r[j+1] = temp; + change = TRUE; + (*mov_count) =(*mov_count) + 3; + } + } + } +} + + +/*=========快速排序输出=========*/ +void QKSort(RecordType *r, int low, int high,int *cmp_count,int *mov_count) + + +{ + int pivot; + if (low < high) + { + pivot = QKPass(r, low, high,cmp_count,mov_count); + QKSort(r, low, pivot - 1,cmp_count,mov_count); + QKSort(r, pivot + 1, high,cmp_count,mov_count); + } +} + +int QKPass(RecordType *r, int left, int right, int *cmp_count, int *mov_count) +{ + RecordType x = r[left]; // 选择基准记录 + int low = left; + int high = right; + while (LT(low , high)) + { + while ((*cmp_count)++,LT(low , high) && r[high].key >= x.key) //high从右到左找小于x.key的记录 + { + high--; + } + r[low] = r[high]; //找到小于x.key的记录,则进行交换 + (*mov_count)++; + while ((*cmp_count)++, LT(low, high) && r[low].key < x.key)// low从左到右找不小于x.key的记录 + { + low++; + } + r[high] = r[low]; // 找到不小于x.key的记录,则交换 + (*mov_count)++; + } + + r[low] = x; //将基准记录保存到low=high的位置 + (*mov_count)++; + return low; //返回基准记录的位置 +} + +/*=========简单选择排序=========*/ +void SelectSort(RecordType *r, int length,int *cmp_count,int *mov_count) +{ + int i, j, k; + RecordType temp; + for (i = 0; i < length-1; ++i) + { + k = i; + for (j = i + 1; j < length; ++j) + { + if ((*cmp_count)++,LT(r[j].key , r[k].key)) + { + k = j; + } + } + + if (k != i) + { + temp = r[i]; + r[i] = r[k]; + r[k] = temp; + (*mov_count) = (*mov_count) + 3; + } + } +} + +/*=========数据输出=========*/ +void print(RecordType *r,int length,int cmp_count,int mov_count) +{ + int i; + for (i = 0; i < length; i++) + { + printf("%d ", r[i].key); + } + printf("\n比较次数:%d\n", cmp_count); + printf("移动次数:%d\n\n", mov_count); +} + +/*=========初值恢复=========*/ +void Inital(RecordType *counts, RecordType *count,int length, int *cmp_count, int *mov_count) +{ + int i; + for (i = 0; i < length; i++) + { + count[i] = counts[i]; + } + (*cmp_count) = 0; + (*mov_count) = 0; +} diff --git a/2017-1/luyj/Sort.h b/2017-1/luyj/Sort.h new file mode 100644 index 00000000..5fb7040a --- /dev/null +++ b/2017-1/luyj/Sort.h @@ -0,0 +1,31 @@ +#include +#include +#include +typedef int KeyType; +typedef int OtherType; + +typedef enum +{ + FALSE, + TRUE +}Bool; + +typedef struct +{ + KeyType key; + OtherType data; +}RecordType; + +void ShellInsert(RecordType *r, int length, int delta, int *cmp_count, int *mov_count); +int QKPass(RecordType *r, int left, int right, int *cmp_count, int *mov_count); +Bool LT(KeyType a, KeyType b); +void InsSort(RecordType *r, int length, int *cmp_count, int *mov_count); +void ShellSort(RecordType *r, int length, int *cmp_count, int *mov_count); +void ShellInsert(RecordType *r, int length, int delta, int *cmp_count, int *mov_count); +void BubbleSort(RecordType *r, int length, int *cmp_count, int *mov_count); +void QKSort(RecordType *r, int low, int high, int *cmp_count, int *mov_count); +int QKPass(RecordType *r, int left, int right, int *cmp_count, int *mov_count); + +void SelectSort(RecordType *r, int length, int *cmp_count, int *mov_count); +void print(RecordType *r, int length, int cmp_count, int mov_count); +void Inital(RecordType *counts, RecordType *count, int length, int *cmp_count, int *mov_count); diff --git a/2017-1/luyj/Sort.png b/2017-1/luyj/Sort.png new file mode 100644 index 0000000000000000000000000000000000000000..3bb9b8243094babda47624f624daf861c592cfba GIT binary patch literal 17816 zcmeHvdsI```faRjwQBKIwX_0lJ=RvRwoMT+hE%b}ib}PFmqLn<#0C%*NgyFftq*)4 zDfNKzO4Jm^B(TvK5Fx>eZ$ctUhzXGR;$cD(Ana^ONOD)uww|7zbH=^nH}1IOj`N43 zgJkWUz1I5HH|IC!w|nrLHTXBjy)zDlLcRI*ie>9isL^5IA9?KS;FAY)8!+HMqf*!5 zm!c{ZGoOM#UL`MCy#$3i#~DAI@EZ90jqNL9Qcr*FP`l2~iZER(|^A{A%;Zk@N!Ta=!<&4#jJ}Czbh7h7!77mu`9Oqm>EYIQqwO z>;6&K&AQY;v%cXYPi76-P7Hq;B zDAco)XJ_L(&PQWN|hlpPv

bn)O-}` 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 U{J(?6MScC%nq?JBzx(lj0kNu_x&QzG literal 0 HcmV?d00001 diff --git a/2017-1/luyj/s_Sort.c b/2017-1/luyj/s_Sort.c new file mode 100644 index 00000000..3ab77c15 --- /dev/null +++ b/2017-1/luyj/s_Sort.c @@ -0,0 +1,50 @@ +#include "Sort.h" +int main() +{ + srand(time(0)); + int length = rand() % 9 + 2; + RecordType *counts; + RecordType *count; + counts = (RecordType*)malloc(length*(sizeof(RecordType))); + count = (RecordType*)malloc(length*(sizeof(RecordType))); + int mov_count = 0; + int cmp_count = 0; + int i; + for (i = 0; i < length; i++) + { + int a = rand() % 9 + 1; + counts[i].key = a; + counts[i].data = 0; + } + for (i = 0; i < length; i++) + { + printf("%d ", counts[i]); + } + + /*=========直接插入排序输出=========*/ + printf("\n直接插入排序:\n"); + Inital(counts, count, length, &cmp_count, &mov_count); + InsSort(count, length, &cmp_count, &mov_count); + print(count, length, cmp_count, mov_count); + /*==========希尔排序输出=========*/ + printf("希尔排序:\n"); + Inital(counts, count, length, &cmp_count, &mov_count); + ShellSort(count, length, &cmp_count, &mov_count); + print(count, length, cmp_count, mov_count); + /*=========冒泡排序输出=========*/ + printf("冒泡排序:\n"); + Inital(counts, count, length, &cmp_count, &mov_count); + BubbleSort(count, length, &cmp_count, &mov_count); + print(count, length, cmp_count, mov_count); + /*=========快速排序输出=========*/ + printf("快速排序:\n"); + Inital(counts, count, length, &cmp_count, &mov_count); + QKSort(count, 0, length - 1, &cmp_count, &mov_count); + print(count, length, cmp_count, mov_count); + /*=========简单选择排序=========*/ + printf("简单选择排序:\n"); + Inital(counts, count, length, &cmp_count, &mov_count); + SelectSort(count, length, &cmp_count, &mov_count); + print(count, length, cmp_count, mov_count); +} + From c891808b06d1e83e065cb04d216297205fe99df2 Mon Sep 17 00:00:00 2001 From: carrie17 Date: Sun, 18 Jun 2017 08:35:36 +0800 Subject: [PATCH 2/2] =?UTF-8?q?Hash=E8=A1=A8=E5=BB=BA=E7=AB=8B=E6=9F=A5?= =?UTF-8?q?=E6=89=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 2017-1/luyj/Hash.c | 157 +++++++++++++++++++++++++++++++++++++++++++ 2017-1/luyj/Hash.h | 47 +++++++++++++ 2017-1/luyj/hash.png | Bin 0 -> 33897 bytes 2017-1/luyj/s_Hash.c | 46 +++++++++++++ 4 files changed, 250 insertions(+) create mode 100644 2017-1/luyj/Hash.c create mode 100644 2017-1/luyj/Hash.h create mode 100644 2017-1/luyj/hash.png create mode 100644 2017-1/luyj/s_Hash.c diff --git a/2017-1/luyj/Hash.c b/2017-1/luyj/Hash.c new file mode 100644 index 00000000..3ff89f9d --- /dev/null +++ b/2017-1/luyj/Hash.c @@ -0,0 +1,157 @@ +#include "Hash.h" + + +int getP(int length) +{ + //找到不大于表长的最大质数 + int p = 0; + int flag = 0; + int i,j; + for (i = length; i > 0; i--) + { + flag = 0; + for (j = 2; j count; + ElemType *x; + ElemType *elem = (ElemType*)malloc(count*(sizeof(ElemType))); + x = elem; + for (i = 0; i < count; i++)//复制表数据到elem中 + { + *x = h->elem[i]; + x++; + } + h->count = 0; + h->sizeindex = h->sizeindex * 2; + x = (ElemType*)realloc(h->elem, h->sizeindex * sizeof(ElemType)); + if (!x) + { + return ERROR; + } + h->elem = x; + for (i = 0; i < h->sizeindex; i++) + { + h->elem->key = NULL; + } + x = elem; + for (i = 0; i < count; i++) + { + InsertHash(h, *x); + } + + +} +int SearchHash(HashTable h, KeyType k, int *q, int *c, int p) +{ + // 在开放定址哈希表H中查找关键码为K的记录 + // c用于记录冲突次数,初值置0 + + *q = Hash(k,p); // 求得哈希地址 + while (-1 != h.elem[*q].key && !EQ(k, h.elem[*q].key)) + { + (*c)++; + collision(q, p); + if ((*c) > h.sizeindex) + { + break; + } + }// 求得下一探查地址 p + if (EQ(k, h.elem[*q].key)) + { // 查找成功,p返回待查数据元素位置 + return SUCCESS; + } + else if (-1 == h.elem[*q].key) + { + return FAILED; // 查找不成功 + } +} + +int InsertHash(HashTable *h, ElemType e) +{ + // 查找不成功时插入数据元素e到开放地址哈希表H中,并返回OK + // 若冲突次数过大,则重建哈希表 + int c = 0;//记录冲突次数 + int q; + int p; + p = getP(h->sizeindex); + if (SUCCESS == SearchHash(*h, e.key, &q, &c, p)) + { + // 表中已有与 e 有相同关键字的元素 + return DUPLICATE; + } + else if (c < p) + { + // 冲突次数 c 未达到上限 + h->elem[q] = e; + ++h->count; + return OK; + } + else + { + // 重建哈希表,极端情况下可能哈希表“已满”。 + // 所以通常的重建过程都是先增大新哈希表的容量 + RecreateHashTable(h); + } +} + +Status InitHashTable(HashTable *h,int num) +{ + + int i; + h->count = 0; + h->sizeindex = num; + h->elem = (ElemType*)malloc(h->sizeindex * sizeof(ElemType)); + if (!(h->elem)) + return ERROR; + ElemType*p = h->elem; + for (i = 0; i < h->sizeindex; i++) + { + p->key = NULL; + p->val = 0; + p++; + } +} diff --git a/2017-1/luyj/Hash.h b/2017-1/luyj/Hash.h new file mode 100644 index 00000000..b4b57ae6 --- /dev/null +++ b/2017-1/luyj/Hash.h @@ -0,0 +1,47 @@ +#include +#include +#include + +#define NULL -1 +#define SUCCESS 1 +#define FAILED 0 +#define DUPLICATE -1 + +typedef int KeyType; +typedef int ValueType; +typedef struct _ElemType +{ + KeyType key; + ValueType val; +#ifdef CHAINED_HASH + struct _ElemType *next; +#endif // CHAINED_HASH + +}ElemType; + +typedef struct +{ + ElemType *elem; + int count; // 当前数据元素个数 + int sizeindex; // hashsize[sizeindex]为当前容量 +} HashTable; + +typedef enum +{ + FALSE, + TRUE +}Bool; + +typedef enum +{ + OK, + ERROR +}Status; + +int InsertHash(HashTable *h, ElemType e); +int Hash(int k, int p); +Bool EQ(KeyType k, KeyType key); +Status collision(int *q, int p); +Status RecreateHashTable(HashTable *h); +int SearchHash(HashTable h, KeyType k, int *q, int *c, int p); +Status InitHashTable(HashTable *h, int num); diff --git a/2017-1/luyj/hash.png b/2017-1/luyj/hash.png new file mode 100644 index 0000000000000000000000000000000000000000..44eb05d322c3942126b11e4e3c861c98fda84021 GIT binary patch literal 33897 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 ", i, h.elem[i]); + } + int p = getP(num); + + for (i = 0; i < 10; i++) + { + int c = 0; + e.key = rand() % 20 + 1; + e.val = rand() % 20 + 1; + int q = Hash(e.key, p); + printf("\n查找: key:%d val:%d\n", e.key, e.val); + if (1 == SearchHash(h, e.key, &q, &c, p)) + { + printf("查找成功 "); + } + else + { + printf("查找失败 "); + } + printf("冲突次数:%d\n", c); + } +} \ No newline at end of file