合并排序实现
= =
-
#include<iostream>
-
using namespace std;
-
-
/******************************************
-
* 合并两个有序的子数组
-
*
-
* 输入:整数数组A[],下标p,q,r,元素个数m
-
* 其中A[p]~A[q]和A[q+1]~A[r]已按递增顺序排序
-
* 输出:按递增顺序排序的子数组A[p]~A[r]
-
******************************************/
-
void merge(int A[], int p, int q, int r, int m){
-
int *bp = new int[m];
-
int i,j,k;
-
i = p; j = q+1; k=0;
-
while(i<=q&&j<=r){ // i从p开始,j从q+1开始 比较A[i]和A[j],递减放入新数组
-
if(A[i]<=A[j]){
-
bp[k++] = A[i++];
-
}else{
-
bp[k++] = A[j++];
-
}
-
}
-
if(i==q+1){ // 若A[p]~A[q]已经输入完,则将A[q+1]~A[r]中未录入的继续录入
-
for(;j<=r;j++){
-
bp[k++] = A[j];
-
}
-
}else{ // 若A[q+1]~A[r]已经输入完,则A[p]~A[q]将中未录入的继续录入
-
for(;i<=q;i++){
-
bp[k++] = A[i];
-
}
-
}
-
k = 0;
-
for(i=p; i<=r; i++){ // 把排序好的数存回A
-
A[i] = bp[k++];
-
}
-
delete bp;
-
}
-
-
/******************************************
-
* 合并排序算法
-
*
-
* 输入:具有n个元素的数组A[]
-
* 输出:按递增顺序排序的数组A[]
-
******************************************/
-
void merge_sort(int A[], int n){
-
int i,s,t = 1;
-
while(t<n){ // 每2个含t/2个元素的数组进行合并,合并完后t*2
-
s = t, t = 2*s, i = 0;
-
while(i+t<n){
-
merge(A,i,i+s-1,i+t-1,t);
-
i = i + t;
-
}
-
if(i+s<n){
-
merge(A,i,i+s-1,n-1,n-i);
-
}
-
}
-
}
-
-
int main(){
-
int i,n;
-
-
cout<<"请输入数组元素个数:";
-
cin>>n;
-
-
cout<<"请输入元素:"<<endl;
-
int* A = new int[n];
-
for(i=0;i<n;i++){
-
cin>>A[i];
-
}
-
-
merge_sort(A,n);
-
-
cout<<"排序结果:"<<endl<<A[0];
-
for(i=1;i<n;i++){
-
cout<<" "<<A[i];
-
}
-
cout<<endl;
-
-
return 0;
-
}
同时只能运行一个程序实例的实现
做软工作业的机房管理系统,各个计算机要有一个监听自身信息的客户端,于是就牵出了一个同时只能运行一个实例的问题。
其实想想也很简单。因为对于现在应用的各个操作系统,都有端口存在,而一个端口只能被一个程序所占用,
因此,在实例化之前只需要启动一个Socket去连接该应用程序所占用的端口,如果能连接上表示该端口已经启动了一个ServerSocket,
不能连接上则启动一个ServerSocket来占用它即可。
但是有个小缺陷:有可能别的程序也占用了该端口,因此很考验RP 。 - -
C的RSA密码算法实现
C写的,囧,网络课本上看过,对于我这种数学白痴怎么可能会?拖住wekooo要了公式,随便写写……
Struts2零配置
百度了下,貌似有使用Annotations和CoC两种。
但它们并不是真正的零配置,只是在一定情况下简化了。
我还是会比较喜欢原版的 = = 不过蛮写个demo看看。
Struts2文件下载
一个简单的利用struts2做文件下载的demo……
Struts2中拦截器与过滤器的执行顺序
通过上图可以看到,顺序应该是我们配的filter在前,之后是struts2的FilterDispatcher,然后是各个拦截器,最后原路返回。
糖果机的状态转换。。
一台糖果机,支持n种操作,譬如:投入硬币、退还硬币、转动曲柄、填充糖果……
而不同状态下不同操作返回的内容不一样。下面是它的状态转换图:
如何实现它的转换呢?
存档读档的Memento——备忘录模式
在玩游戏的时候我们总要存档、读档,
怎样实现这个功能呢?