数据结构与算法
文章平均质量分 67
维那厮
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数组的归并排序(不使用辅助空间,递归)
void MergeSortCore(int* data, int first, int last);void RingShift(int* data, int begin, int mid, int end);void MergeSort(int* data, int length){ if(data == NULL || length <= 0) return; MergeSort原创 2014-07-12 13:50:18 · 1887 阅读 · 0 评论 -
编程之美4.10 数字哑谜和回文
//回溯算法int FindTheNumber(){ int solution[10]; memset(solution, 0, 10*sizeof(int)); bool used[10]; memset(used,false,10*sizeof(bool)); int num = 0; int k = 1; while(k >= 1) { if(solution[k]原创 2014-07-15 23:48:25 · 881 阅读 · 0 评论 -
链表的快速排序(递归,交换节点数据)
struct ListNode { int val; ListNode *next; ListNode(int x = 0) : val(x), next(NULL) {}};void QuickSortCore(ListNode* pBegin, ListNode* pEnd);ListNode* partition(ListNode* pBegin, ListNode* pEnd)原创 2014-07-15 21:51:03 · 562 阅读 · 0 评论 -
数组的快速排序(使用栈的非递归实现)
void QuickSortCore(int* data, int first, int last);int partition(int* data, int first, int last);void QuickSort(int* data, int length){ if(data == NULL || length <= 0) return; QuickSortCore(data,原创 2014-07-15 16:54:51 · 2605 阅读 · 1 评论 -
链表的归并排序(经典实现:递归)
ListNode* MergeSort(ListNode* head) { if(head == NULL || head->next == NULL) return head; ListNode *head1 = head, *head2 = head; while(head2->next != NULL && head2->next->next != NULL) {原创 2014-07-14 00:10:37 · 765 阅读 · 0 评论 -
数组的快速排序(递归,需要隐性栈空间)
void QuickSortCore(int* data, int first, int last);int partition(int* data, int first, int last);void QuickSort(int* data, int length){ if(data == NULL || length <= 0) return; QuickSortCore(data,原创 2014-07-15 16:06:23 · 587 阅读 · 0 评论 -
数组的归并排序(使用Ο(n)的辅助空间,循环)
void MergeSort(int* data, int length){ if(data == NULL || length <= 0) return; int *copy = new int[length]; int* arr[2] = {data, copy}; int cur = 0; //steps为步长,将arr[cur]分组,每组steps个,然后两两merge到a原创 2014-07-13 00:38:00 · 727 阅读 · 0 评论 -
数组的归并排序(不使用辅助空间,循环)
//data[begin,mid)和data[mid,end)两部分交换位置 void RingShift(int* data, int begin, int mid, int end);void MergeSort(int* data, int length){ if(data == NULL || length <= 0) return; //steps为步长,将data[]分原创 2014-07-13 09:39:59 · 3876 阅读 · 0 评论 -
数组的归并排序(经典实现:使用Ο(n)的辅助空间,递归)
void MergeSortCore(int* data, int* copy, int first, int last);void MergeSort(int* data, int length){ if(data == NULL || length <= 0) return; int* copy = new int[length]; for(int i = 0; i < lengt原创 2014-07-12 11:23:04 · 819 阅读 · 0 评论 -
KMP模式匹配算法
/*** 对于非空串T,计算它的next数组**/void get_next(const char* T, int* next){ //输入检查 if(T == NULL || *T == '\0' || next == NULL) return; int i = 1, j = 0; next[0] = 0; int lenT = strlen(T); while(i < l原创 2014-09-01 21:19:36 · 365 阅读 · 0 评论
分享