主题:渴求高手指点迷津!~~~~~~一个排序算法
1 一个排序程序,帮忙改一下!~
现有一组数据:
l1:
PU-6,2;
PD-8,2;
l2:
PU-4,4;
PD-8,4;
l3;
PU-5,6;
PD-10,6;
l4:
PU-3,8;
PD-7,8;
PU是坐标开始变量,PD是坐标结束变量(PU,PD两点连接起来表示的是一条线段)。
要求:
1.先找出与X轴最近的那条线段(作为参考线段);
2.以最近线段(参考线段)的PD为起点作为参考点,依次计算起点PD与下面所有线段的PU的距离,进行从小到大排序;
3.得到第一次排序的数据后,将第一条线段保留起来,再以二条线段作为参考线段,取第二条线段的PD计算PD与下面所有线段的PU的距离,进行从小到大排序;
4.重复2,3步骤;
5.得到最后的排序结果.
参考程序:
//----------------------------perm.h
#ifndef PERM_H
#define PERM_H
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
template <typename T>
inline void Swap(T &a,T &b)
{
T temp=a;
a=b;
b=temp;
}
template <typename T>
void Perm( vector< T > list,int k,int m,ostream &os)
{
int i;
if(k==m){
for(i=0;i<=m;++i)
os<<list[i];
os<<endl;
}
else for(i=k;i<=m;++i){
Swap(list[k],list[i]);
Perm(list,k+1,m,os);
Swap(list[k],list[i]);
}
}
#endif
//-----------main.cpp---------------
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include "perm.h"
using namespace std;
int main(int argc, char *argv[])
{
ofstream outfile("print_prem.txt");
vector<int> a;
for(int ix=1;ix<=3;++ix)
a.push_back(ix);
for(int ix=0;ix<a.size();++ix)
cout<<a[ix];
Perm(a,0,a.size()-1,cout);
Perm(a,0,a.size()-1,outfile);
system("PAUSE");
return 0;
}
现有一组数据:
l1:
PU-6,2;
PD-8,2;
l2:
PU-4,4;
PD-8,4;
l3;
PU-5,6;
PD-10,6;
l4:
PU-3,8;
PD-7,8;
PU是坐标开始变量,PD是坐标结束变量(PU,PD两点连接起来表示的是一条线段)。
要求:
1.先找出与X轴最近的那条线段(作为参考线段);
2.以最近线段(参考线段)的PD为起点作为参考点,依次计算起点PD与下面所有线段的PU的距离,进行从小到大排序;
3.得到第一次排序的数据后,将第一条线段保留起来,再以二条线段作为参考线段,取第二条线段的PD计算PD与下面所有线段的PU的距离,进行从小到大排序;
4.重复2,3步骤;
5.得到最后的排序结果.
参考程序:
//----------------------------perm.h
#ifndef PERM_H
#define PERM_H
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
template <typename T>
inline void Swap(T &a,T &b)
{
T temp=a;
a=b;
b=temp;
}
template <typename T>
void Perm( vector< T > list,int k,int m,ostream &os)
{
int i;
if(k==m){
for(i=0;i<=m;++i)
os<<list[i];
os<<endl;
}
else for(i=k;i<=m;++i){
Swap(list[k],list[i]);
Perm(list,k+1,m,os);
Swap(list[k],list[i]);
}
}
#endif
//-----------main.cpp---------------
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include "perm.h"
using namespace std;
int main(int argc, char *argv[])
{
ofstream outfile("print_prem.txt");
vector<int> a;
for(int ix=1;ix<=3;++ix)
a.push_back(ix);
for(int ix=0;ix<a.size();++ix)
cout<<a[ix];
Perm(a,0,a.size()-1,cout);
Perm(a,0,a.size()-1,outfile);
system("PAUSE");
return 0;
}