编程珠玑(产品篇)
来源:互联网 发布:淘宝买沙发靠谱吗 编辑:程序博客网 时间:2024/05/22 03:53
第十一章
关于排序函数
sort1中不断地给t赋相同的初始值,可以利用sot2的方法改进
#include<stdio.h>void sort1() {for(int i =1; i < n; i++) {for(int j = i; j > 0 && x[j-1]>x[j]; j--) {t = x[j];x[j] = x[j-1];x[j-1] = t;}}}void sort2() {for (int i = 1; i < n; i++) {t = x[i];for (int j = i; j > 0 && x[j-1] > t; j--)x[j] = x[j-1];x[j] = t;}}
快速排序,堆排序,二分查找之前已经写过,这里就不写了。
文本中的单词个数统计,可用哈希或者STL中的map。
查找给定字符串中的最长重复子串,利用后缀数组。根据书上的例子实现的代码如下:
#include <stdio.h>#include <string.h>#include <iostream>using namespace std;#include <algorithm>#define MAXN 1024char str[MAXN];char *suffix[MAXN];bool cmp(char *a, char *b) {if (strcmp(a,b) < 0)return 1;return 0;}int comlen(char *a, char *b) {int l1 = strlen(a);int l2 = strlen(b);int i = 0;while (i < l1 && i < l2 && a[i] == b[i])i++;return i;}int main() {int n = 0;int i;int maxl = 0;scanf("%s", &str);n = strlen(str);for (i=0;i<n;i++)suffix[i] = &str[i];sort(suffix, suffix + n, cmp);for (i=0;i<n;i++)printf("%s\n", suffix[i]);for (i=0;i<n-1;i++) {if (comlen(suffix[i], suffix[i+1]) > maxl) maxl = comlen(suffix[i], suffix[i+1]);}printf("%d\n", maxl);return 0;}
- 编程珠玑(产品篇)
- 编程珠玑(基础篇)
- 编程珠玑(性能篇)
- 编程珠玑(1)
- 编程珠玑(2)
- 编程珠玑(一)
- 【编程珠玑】鸟瞰 --- 编程珠玑 (2012.8.7)
- 【编程珠玑】鸟瞰 --- 编程珠玑 (2012.8.7)
- 编程珠玑-第一章--位图篇
- [*****]编程珠玑(第二版)
- shell编程珠玑(1)
- shell编程珠玑(2)
- 《编程珠玑》读书笔记(一)
- 《编程珠玑》读书笔记(三)
- 编程珠玑(一)位图
- 《编程珠玑》读书笔记(一)
- 《编程珠玑》读书笔记(三)
- 编程珠玑读书笔记(一)
- android-onInterceptTouchEvent()与onTouchEvent() - 随心
- Scintilla使用(编辑器篇)(2) - 全文检索和修改
- 凸包问题(圈水池)
- 慎用USES_CONVERSION
- v$session和kill session权限问题
- 编程珠玑(产品篇)
- Scintilla使用(编辑器篇)(3) - 搜索和替换
- 游戏行业中的职位:你可以做什么
- SQL语句效率分析
- java编程开发性能优化
- Oracle 归档与非归档的切换
- August 23
- 将PowerPCB 中的pcb文件导入到Protel中使用
- 十六进制CString转__int64