随笔分类 -  数据结构

摘要:给定string数组把所有的同构词都聚在一起: 例: ["eat", "tea", "tan", "ate", "nat", "bat"] 返回: bat eat tea ate tan nat 说明:如果两个词所组成的字母完全相同,只是字母的位置不同,就称之为同构词。 思路: 遍历整个str数组, 阅读全文
posted @ 2020-10-21 20:12 王清河 阅读(412) 评论(0) 推荐(0) 编辑
摘要:KMP算法是字符串匹配功能的一个优化。 所谓字符串匹配的问题意思是说,给一个字符串和一个匹配串,判断这个匹配串是否被这个字符串包含。或者说求匹配字符串在给的字符串中出现的位置。 在C语言中,strstr函数就是这个字符串功能的实现,既然你看到了这篇博客,我就默认你已经了解strstr函数。 举个例子 阅读全文
posted @ 2019-12-21 20:22 王清河 阅读(314) 评论(0) 推荐(0) 编辑
摘要:08 基数排序(Radix Sort) 基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。排序过程是将所有待比较数值统一为同样的数位长度,数位较短的数前面补零,然后从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一 阅读全文
posted @ 2019-02-23 21:56 王清河 阅读(382) 评论(0) 推荐(0) 编辑
摘要:07 归并排序 (Merge Sort) 归并操作的工作原理如下: 第一步:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列; 第二步:设定两个指针,最初位置分别为两个已经排序序列的起始位置; 第三步:比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置 阅读全文
posted @ 2019-02-23 21:43 王清河 阅读(242) 评论(0) 推荐(0) 编辑
摘要:05 选择排序 (Selection Sort) 原理:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。 空间效率:O(1) 时间效率:最好情况:O(N) 阅读全文
posted @ 2019-02-23 21:29 王清河 阅读(298) 评论(0) 推荐(0) 编辑
摘要:03 冒泡排序(Bubble Sort) 每次选择两个元素,按照需求进行交换(比如需要升序排列的话,把较大的元素放在靠后一些的位置),循环 n 次(n 为总元素个数),这样小的元素会不断 “冒泡” 到前面来。 普通版 进阶版 空间效率:O(1) 时间效率:最好情况:O(n) 平均情况:O(N^2) 阅读全文
posted @ 2019-02-22 22:42 王清河 阅读(291) 评论(0) 推荐(0) 编辑
摘要:01 插入排序(Insertion Sort) 原理:每次选择一个元素,并且将这个元素和整个数组中的所有元素进行比较,然后插入到合适的位置。 void insertion_sort(int arr[], int n) { int i,j; for (i = 1; i < n; i++) { int 阅读全文
posted @ 2019-02-21 22:17 王清河 阅读(184) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示