初试nginx+uwsgi+django[2]
2012-05-17 17:31
176 查看
package com.liuxt.sort.impl;
import com.liuxt.sort.Sort;
public class MergeImpl implements Sort {
/*
* 归并排序的算法:
*
* (non-Javadoc)
* @see com.liuxt.sort.Sort#sortData(int[])
*/
public void sortData(int[] data1) {
int length=1,k=0; /**length为分段大小,最开始设置为1**/
int n=data1.length;
int[] data2;
data2=new int
;
while(length<n)
{
if(k==0) Msort(data1,data2,n,length);
else Msort(data2,data1,n,length);
length*=2; /**每完成一趟归并,所有的有序分段的长度翻一倍**/
k=1-k;
}
if(k==1) /**归并结果为基数,排序结果放在data2中,再将结果复制到data1中**/
for(k=0;k<n;++k)
data1[k]=data2[k];
}
/**
* 函数的功能:
* 将data1中相邻的两个分段合并为一个有序段,归并的结果放在data2中。
* data1中的分段情况如下:
* data1[0...len-1],data1[len....2*len-1],,,data1[(I-1)*len...I*len-1]
* I为分组号
*
*
* @param data1
* @param data2
* @param n
* @param len
*/
private void Msort(int[] data1, int[] data2, int n, int len) {
int start_p,end_p;
start_p=0; /**从下标为0的元素开始,**/
while(start_p+len<n){ /**取相邻的两个有序段开始合并**/
end_p=start_p+2*len-1;
if(end_p>=n) end_p=n-1;
/**调用合并函数。开始,start_p=0,len=1,end_p=1
两两合并为一个有序段,结果存在data2中 **/
Merge(data1,data2,start_p,start_p+len-1,end_p);
start_p=end_p+1;
}
if(start_p<n){
/**直接将剩下的一个有序段的元素复制到data2中。**/
for(;start_p<n;start_p++)
data2[start_p]=data1[start_p];
}
}
/**
* 将分别有序的data1[s,,m]和data1[m+1..n]归并为有序的data2[s...n]
*
* @param data1
* @param data2
* @param s
* @param m
* @param n
*/
private void Merge(int[] data1, int[] data2, int s, int m, int n) {
int i,j,k;
for(i=m+1,k=s;s<=m && i<=n;++k)
{
if(data1[s]<data1[i])
data2[k]=data1[s++];
else data2[k]=data1[i++];
}
for(j=s;j<=m;++j,++k)
data2[k]=data1[j];
for(j=i;j<=n;++j,++k)
data2[k]=data1[j];
}
}
import com.liuxt.sort.Sort;
public class MergeImpl implements Sort {
/*
* 归并排序的算法:
*
* (non-Javadoc)
* @see com.liuxt.sort.Sort#sortData(int[])
*/
public void sortData(int[] data1) {
int length=1,k=0; /**length为分段大小,最开始设置为1**/
int n=data1.length;
int[] data2;
data2=new int
;
while(length<n)
{
if(k==0) Msort(data1,data2,n,length);
else Msort(data2,data1,n,length);
length*=2; /**每完成一趟归并,所有的有序分段的长度翻一倍**/
k=1-k;
}
if(k==1) /**归并结果为基数,排序结果放在data2中,再将结果复制到data1中**/
for(k=0;k<n;++k)
data1[k]=data2[k];
}
/**
* 函数的功能:
* 将data1中相邻的两个分段合并为一个有序段,归并的结果放在data2中。
* data1中的分段情况如下:
* data1[0...len-1],data1[len....2*len-1],,,data1[(I-1)*len...I*len-1]
* I为分组号
*
*
* @param data1
* @param data2
* @param n
* @param len
*/
private void Msort(int[] data1, int[] data2, int n, int len) {
int start_p,end_p;
start_p=0; /**从下标为0的元素开始,**/
while(start_p+len<n){ /**取相邻的两个有序段开始合并**/
end_p=start_p+2*len-1;
if(end_p>=n) end_p=n-1;
/**调用合并函数。开始,start_p=0,len=1,end_p=1
两两合并为一个有序段,结果存在data2中 **/
Merge(data1,data2,start_p,start_p+len-1,end_p);
start_p=end_p+1;
}
if(start_p<n){
/**直接将剩下的一个有序段的元素复制到data2中。**/
for(;start_p<n;start_p++)
data2[start_p]=data1[start_p];
}
}
/**
* 将分别有序的data1[s,,m]和data1[m+1..n]归并为有序的data2[s...n]
*
* @param data1
* @param data2
* @param s
* @param m
* @param n
*/
private void Merge(int[] data1, int[] data2, int s, int m, int n) {
int i,j,k;
for(i=m+1,k=s;s<=m && i<=n;++k)
{
if(data1[s]<data1[i])
data2[k]=data1[s++];
else data2[k]=data1[i++];
}
for(j=s;j<=m;++j,++k)
data2[k]=data1[j];
for(j=i;j<=n;++j,++k)
data2[k]=data1[j];
}
}
相关文章推荐
- 初试nginx+uwsgi+django[1]
- Ubuntu Nginx uwsgi django 初试
- django+uwsgi+nginx部署
- nginx uwsgi django supervisord Centos部署
- Django+nginx+uwsgi环境搭建
- Cenos(6.6/7.1)下从源码安装Python+Django+uwsgi+nginx到写nginx的环境部署(一)
- nginx+uwsgi+django部署
- Ubuntu 14.04---Nginx+uWsgi+Django+Python+MongoDB
- Nginx+uWSGI+Django+Python在Linux上的部署
- NGINX+UWSGI部署生产的DJANGO代码
- python + django + bootstrap + uWSGI + nginx 环境搭建
- Centos+nginx+uwsgi+django
- Nginx+uWSGI+Django在Ubuntu下的部署
- django+nginx+uwsgi 部署配置
- python3.x +django + nginx + uwsgi 搭建web服务
- Setting up Django and your web server with uWSGI and nginx
- Setting up Django and your web server with uWSGI and nginx
- CentOS7部署Django,nginx,uwsgi,redis
- Ubuntu Server 14.04.2 LTS 配置 Nginx + uwsgi + Django
- 技术笔记——Django+Nginx+uwsgi搭建自己的博客(二)