数据结构
VPN_LI
这个作者很懒,什么都没留下…
展开
-
堆排序
思路: 1、将无需序列构建成一个堆,根据升序降序需求选择大顶堆或小顶堆; 2、将堆顶元素与末尾元素交换,将最大元素”沉”到数组末端; 3、重新调整结构,使其满足堆定义,然后继续交换堆顶元素与当前末尾元素,反复执行调整+交换步骤,直到整个序列有序。 例子: 第一步:做成大根堆 第二步和第三步: 沉底并调整: 源代码:#include<stdio.h>#include<原创 2018-01-27 02:21:23 · 219 阅读 · 0 评论 -
快速排序
思路: 1、先从数列中取出一个数作为基准数。 2、分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 3、再对左右区间重复第二步,直到各区间只有一个数。 例如: 将low指向头,high指向尾,将基准值放在tmp中,一次快排过程,如图: 源代码:int Partion(int *arr, int low, int high)//第一次快排{原创 2018-01-25 17:11:22 · 245 阅读 · 0 评论 -
字符串匹配算法(BF KMP)
BF算法(朴素算法): 思路: 子串的定位操作通常称做模式匹配,其中子串称做模式串,主串称做目标串,朴素的模式匹配算法即是模式匹配的一种算法,其优点是简单易懂,易于理解,某些应用场合效率较高。缺点是需要多次回溯,对于数据较大的文本文件而言效率极低。 例子: 在BF算法中,失配时,主串中的i回退到每次起始位置的下一个位置,即i= i-j+1;子串中的j回退到起始位置原创 2018-01-28 12:06:36 · 349 阅读 · 0 评论 -
八大排序总结
排序方式 时间复杂度(最好/最坏情况) 空间复杂度 稳定性冒泡排序 O(n^2)/O(n) O(1) 稳定选择排序 O(n^2) O(1) 不稳定直接插入排序 O(原创 2018-01-29 19:55:03 · 300 阅读 · 0 评论