找一个vector里第k大的数一直是个有意思的课题, 这次又碰到了, 自己写了一个. 记下来记下来, 以后八成用得到.
网上给的思路很多, 大家普遍认为用quicksort的algorithm是效率最好的. 原本也不怎么在乎效率问题, 完全是被240逼的啊啊啊啊啊...
vector好像并不是高效率的选择, 不过随它去吧`这次的tree实在有够恶心
#include <vector>
int kTh(vector<int> & vals, int k){
if(k == 0){ // 如果k为0, 则取中点
k = vals.size();
k = k / 2 + k % 2;
}
vector<int> v, l ,r;
int i;
v = vals;
int c, n = 0, s = v.size(), p = v[0]; // pivot = the first
while(true){
for(i = s-1; i >= 0; i--){ // partite
c = v[i];
if(c <= p) l.push_back(c);
else if(c > p) r.push_back(c);
}
s = l.size();
if(s == k) break; // find the k'th
else if(s > k) v = l; // in left
else if(s < k) { // in right
k = k - l.size();
v = r;
}
l.clear();
r.clear();
s = v.size();
p = v[0]; // re-choose pivot
}
return p;
}
欢迎大家批评指正...= =`
更新更规范的写法, 请见 CS 240复习总结之三: Sorting and Randomized Algorithms
]]>刚刚搞定了Nginx二级域名的自动rewrite, 只要把自动匹配的配置放在几个特殊server定义之前, 就不会相互影响, 还挺简单的.
需要在nginx.conf里修改http里增加新的server部分
先说说标准的二级域名rewrite怎么写:
server {
listen 80;
server_name sub.domain.com;
index index.html index.htm index.php;
root /***/wwwroot/sub_domain;
include other.conf;
location ~ .*\.(php|php5)?$ {
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 30d;
}
location ~ .*\.(js|css)?$ {
expires 12h;
}
access_log off;
}
基本上在server_name里写上地址, root里写上对应的目录就万事大吉了
然后是自动匹配的部分, 区别只在server_name和root的解析上:
server_name *.domain.com;
set $subdomain "default";
if ( $host ~* (.*)\.(.*)\.(.*)) {
set $subdomain $1;
}
root /***/wwwroot/$subdomain;
第一篇结束...哈哈
注: 以上配置是以Lnmp一键安装包自动生成的配置文件为基础修改的
]]>总体来说= =`还算ok吧. 毕竟配上coupon, 每3个月才$6.29, 而且这个价格还是终身的, 即使速度不太理想, 也不算大碍. 稳定性有待长期验证.
后续请看 http://blog.gregwym.info/guo-duan-huan-vps-zhe-hui-shi-quickweb.html
已经在Title上写了是学习笔记, 那必然主要用来记技术上的东西.
越往后学越觉得脑子不够用, 很多以前折腾过的东西, 再碰到的时候明明知道以前解决过却想不起来/找不到解决的方法了. 所以能有这个地方收集平时学到的点滴, 总又一天会派上用场.
(又因为找不到合适的笔记软件, 记录Code什么的, 用网页的形式最合适不过...)
Intro就这样吧`
做个Code Highlight的演示
if(this.is.c++()){
return "this should be highlighted\n"
}
]]>