Skip to main content

高亮插件测试

练习搜索算法时的一些代码,试一下代码高亮的效果,可结果去如此糟糕 ...
怎么是这副模样? 跟模板不兼容 ??


// Sorting.cpp : by iX.
//
#include <stdio.h>
#include <string>
#include <iomanip> //支持cout格式化输出
#include <iostream>
static string ss;
class rnda //定义一个随机数组类
{
public:
int num; //数组元素个数
double *p; //指针p指向数组空间首地址
public:
rnda(int);
void print();
};
rnda::rnda(int n) //由指定值生成数组
{
int i,j;
num=n;
p=new double[num];
double r=1.0;
for(i=0;i<num ;i++) //产生num个0-1之间的随机数
{
r=2053.0*r+13849.0;
j=r/65536.0;
r=r-j*65536.0;
p[i]=r/65536.0;
}
for(i=0;i<num;i++) //产生num个0-1000之间的随机数
p[i]=0+1000.0*p[i];
return;
}
void rnda::print() //打印出当前数组
{
int i;
for(i=0;i<num;i++)
cout<<setw(10)<<p[i];
cout<<endl;
}
//*****************定义各类排序算法函数**********************
// A、双向扫描冒泡算法
void bubble(double a[],int n)
{
int up,dn,i,j; //定义i,j两个临时变量
double t; //t用于数值交换的临时变量
up=0; dn=n-1; //up作为数组扫描的上界标识,dn下界标识
while(up<dn)
{j=dn-1;dn=0;
for(i=up;i<=j;i++)
//从前(up)往后(dn)扫描,将较大值往后排
if(a[i]>a[i+1])
//最后一次交换后的i值作为下界(dn)标识
{t=a[i];a[i]=a[i+1];a[i+1]=t;dn=i;}
j=up+1;up=0;
for(i=dn;i>=j;i—)
//从后(dn)往前(up)扫描,将较大值往后排
if(a[i-1]>a[i])
//最后一次交换后的i值作为上界(up)标识
{t=a[i-1];a[i-1]=a[i];a[i]=t;up=i;}
}
ss="冒泡算法";
return;
}
// B、快速排序算法(递归)
static int split(double p[],int n) //用于快速排序法的表的分割函数
{
int i,j,k,l;
double t;
i=0;j=n-1;
k=(i+j)/2;
if ((p[i]>=p[k])&&(p[k]>=p[j])) l=k; //在表的前、中、后三个元素中选取中项作为分割点
else if((p[i]>=p[j])&&(p[j]>=p[k])) l=j;
else l=i;
t=p[l]; //...
p[l]=p[i]; //将此时的第一个元素p[i]的值移到中项p[l]
while(i!=j)
{
while((i<j )&&(p[j]>=t)) //从后向前检查,发现不大于t的p[j]就把它丢到前面的p[i]
j--;
if(i</j><j )
{
p[i]=p[j];i++; //...
while((i<j)&&(p[i]>=t)) //从前向后检查,发现不小于t的p[i]就把它丢给后面的p[j]
i++;
if(i</j><j )
{p[j]=p[i];j--;} //...
}
}
p[i]=t; //在i,j指向同一个位置的时候,再把分割值赋给p[i]
return(i); //返回分割线位置
}
//排序函数
void quick(double b[],int n)
{
int m,i;
double *s;
if(n>10)
{
i=split(b,n); //对表进行分割,同时得到分割线位置
quick(b,i); //对分割后的前部分子表进行快速排序
s=b+(i+1); m=n-(i+1);
quick(s,m); //对后面子表进行快速排序
ss="快速排序算法";
}
else
bubble(b,n); //子表长度若小于10,则调用冒泡法排序
return;
}
// C、简单插入排序算法
void insort(double c[],int n)
{
int i,k;
double t;
for(i=1;i<n ;i++)
{
t=c[i];
for (k=i-1;k>=0;k--) //将t的值依次往前插入
if (c[k]>t)
c[k+1]=c[k];
else break; //跳出,避免无畏的比较
c[k+1]=t;
}
ss="简单插入排序算法";
return;
}
// D、希尔排序算法
void shell_sort(double d[],int n)
{
int i,h,k;
double t;
h=n/2; //在步进h恒等于1时,等价于插入排序法
while (h>0)
{
for(i=h;i</n><n -1;i++)
{
t=d[i];
k=i-h;
while((k>=0)&&(d[k]>t))
{d[k+h]=d[k];k-=h;}
d[k+h]=t;
}
h=h/2; //减小步进,进行下一轮的排序
}
ss="希尔排序算法";
return;
}
// E、堆排序算法(适用于大规模的线性表排序)
static int sift(double p[],int i,int n) //用于堆排序法的表的筛选函数
{
int j;
double t;
t=p[i];j=2*(i+1)-1;
while (j< =n)
{
if((j<n)&&(p[j]<p[j+1])) j++;
if (t<p[j])
{p[i]=p[j];i=j;j=2*(i+1)-1;}
else j=n+1;
}
p[i]=t;
return(0);
}
void heap(double e[],int n)
{
int i,mm;
double t;
mm=n/2;
for(i=mm-1;i>=0;i--)
sift(e,i,n-1);
for(i=n-1;i>=1;i--)
{
t=e[0];e[0]=e[i];e[i]=t;
sift(e,0,i-1);
}
ss="堆排序算法";
return;
}
// 定义一个用于调用特定排序函数对数组进行排序的函数
void sorting(int s,double p[],int n)
{
void (*f)(double[],int); //(*f)(double,int) ——指向函数的指针
switch (s)
{
case 1: f=bubble;
break;
case 2: f=quick;
break;
case 3: f=insort;
break;
case 4: f=shell_sort;
break;
case 5: f=heap;
break;
}
(*f)(p,n); // 调用对应函数排序
return;
}
//***************** Main函数 **********************
int main()
{
int n,f=0;
cout< <"定义随机数组数据成员个数(1~1000间的随机数组)"<<endl;
cin>>n;
rnda r(n); //产生一个有n个成员的随机数组
cout< <"随机数组:"<<endl;
r.print();
while(f<1||f>5)
{
cout< <"选择排序算法:"<<endl;
cout<<"... 1、双向扫描冒泡算法"<<endl;
cout<<"... 2、快速排序算法"<<endl;
cout<<"... 3、简单插入排序算法"<<endl;
cout<<"... 4、希尔排序算法"<<endl;
cout<<"... 5、堆排序算法"<<endl<<endl;
cout<<"选择:";
cin>>f;
}
sorting(f,r.p,r.num);
cout< <endl<<"按["<<ss<<"]排列后数组:"<<endl;
r.print();
return 0;
}

Comments

Popular posts from this blog

Cloudera Hadoop 集群安装(ubuntu + CDH5.10)

前言 CDH是Cloudera公司的Hadoop发行版,基于稳定版本的Apache Hadoop构建,包含Hadoop,Spark,Hive,Hbase和一些工具等,并集成了很多补丁,可直接用于生产环境。通过Cloudera Manager可以简化hadoop各组件的部署和配置过程。 目前CDH对ubuntu支持的最高版本为14.04,因此不建议使用更高版本的ubuntu来部署CDH。 环境准备: 1.配置网络(所有节点) 修改hostname: $ sudo vi /etc/hostname cdh01 修改IP地址: $ sudo vi /etc/network/interfaces auto eth0 iface eth0 inet static         address 172.16.13.11         netmask 255.255.255.0         gateway 172.16.13.254 重启网络服务生效: $ sudo ifdown eth0 && sudo ifup eth0 修改ip与主机名的对应关系: $ sudo vi /etc/hosts 172.16.13.11 cdh01 172.16.13.12 cdh02 172.16.13.13 cdh03 2.配置SSH(所有节点) 启用root登陆(CDH5.10需要进行此步操作) $ sudo vi /etc/ssh/sshd_config #PermitRootLogin without-password PermitRootLogin yes $ sudo service ssh restart $ sudo passwd root 设置ssh无密码登陆 //在主节点上执行一路回车,生成无密码的密钥对 $ ssh-keygen -t rsa //将生成的密钥文件复制到其它节点 $ ssh-copy-id cdh02 $ ssh-copy-id cdh03 测试: 在主节点上ssh hadoop2,正常情况下,不需要密码就能直接登陆进去了。 3.安装Oracle JDK(所有节点) 运行CDH5必须使用Oracle的Jdk,需要Java 7及以上版本支持。 在Oracle的官网下载jdk包,解压到相应目录,例如/usr/java/jdk1.8.0_

Bitwarden 配置 Let’s Encrypt 证书

由于在内网环境部署的Bitwarden,不能通过安装脚本自动申请 Let’s Encrypt 的证书。 起初我用了一个自签名证书,发现特别不好使,虽然在firefox 跟 chrome 内核的浏览器上都能通过插件访问,但必须添加信任才行,特别是用Bitwarden Desktop 客户端连的时候,一直报错,可能是不认自签名证书。 于是琢磨了下怎么手动申请Let’s Encrypt的证书用于内网,对过程简单梳理如下。 自签名证书 | Self-Signed Certificate 如果你在内网环境只需要自签名证书,可以参考Bitwarden的帮助文档( Installing and depoying )进行设置: 1、生成自签名证书: //一条命创建私钥和证书: openssl req -x509 -newkey rsa:4096 -sha256 –nodes -days 10950 \    -keyout privite.key -out identity.crt \    -subj "/C= US /ST= New York /L= New York /O= Company Name /OU= CREAST /CN= bw.creast.win " 将生成的文件放到 /ssl 目录下: privite.key     ~/bwdata/ssl/ bw.creast.win/private.key identity.crt      ~/bwdata/ssl/ bw.creast.win/identity.crt 2、生成.pfx格式证书文件: //一条命令将前面生成的私钥和证书打包成需要的pfx格式文件 openssl pkcs12 -export -out ./ identity.pfx -inkey privite.key \    -in identity.crt -certfile identity.crt -passout pass: IDENTITY_CERT_PASSWORD 注意 IDENTITY_CERT_PASSWORD 跟./env/global.override.e

Tor洋葱路由的设置与使用

先说明一下,这里只是利用Tor来访问被GWF屏蔽的优秀服务(如Wikipedia、Blogger、GG App等),并不侧重于如何匿名访问网络。以下Tor设置方法适用于: MS Windows(2000/XP/Vista/Server)系统 第一步:下载并安装Tor 关于Tor(The Onion Router,洋葱路由)的工作原理,可以参考枪旗工作室的说明 ( http://tcno.net/doc/tor/#para1 )。在Windows下安装配置Tor已经非常容易了,直接下载这样一个Tor的Windows 捆绑软件包( Vidalia-Tor-Privoxy Bundle ),其中已经预先配置好这些软件能够一同工作。 安装前可以看到套件捆绑了哪些软件:Tor、Vidalia(Tor 的一个图形用户界面)和 Privoxy(Web 代理软件)、Torbutton(Firefox浏览器插件)全选这些软件进行安装。 安装完成后会自动运行Vidalia,在弹出的控制面板上可以看到当前的状态,Tor已经运行了,此时不需要再进行其它设置了。 第二步:配置浏览器使用Tor 如果使用 Firefox 浏览器,Bundle里已经附带了 Torbutton 插件 ,打开/重启Firefox就会在右下角显示Tor Enabled/Disabled,单击它可以选择是否开启Tor代理功能。 对于 Internet Explorer 没有现成的插件可用,需要手动配置代理设置,也很容易。 菜单位置 工具 - Internet 选项 - 连接 - 局域网设置 - 代理服务器 - 高级 - 服务器 在代理理服务器地址栏里填入 "localhost",端口为 "8118"(Privoxy不支持FTP代理,填不填都无所谓了);注意套接字SOCKS代理的端口为 "9050",如果有其它选项,请选择Socks5,然后"确定"即可。 对于 Maxthon ,如果对IE设置了Tor可以选择“使用IE代理设置”,或者手动添加一个代理列表,内容与上面填写的一样,然后选择应用就可以了。 这里说明一下 Privoxy 的作用,因为当直接使用 SOCKS 代理时,浏览器会泄露