#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<string.h>
#include<string>
#include<math.h>
#include<algorithm>
#define maxNT 100
using namespace std;
struct Point {
double x;
double y;
int index;
};
struct Edge {
Point start;//邊的起點(diǎn)
Point end;//邊的終點(diǎn)
double factor;
};
void computeDistance(Edge &e1) {//計(jì)算點(diǎn)之間的距離
double d1=pow(e1.start.x-e1.end.x,2);
double d2=pow(e1.start.y-e1.end.y,2);
e1.factor= sqrt(d1+d2);
}
void outEdge(Edge e) {
printf("(%f ,%f)->(%f,%f) ,dis:%f\n",e.start.x,e.start.y,e.end.x,e.end.y,e.factor);
}
bool compareEdge(Edge e1,Edge e2) {//比較函數(shù)
outEdge(e1);
outEdge(e2);
if(e1.factor<e2.factor) {
return true;
}
return false;
}
int main() {
Edge edges[3];
edges[0].start.x=1.0;
edges[0].start.y=1.0;
edges[0].end.x=2.0;
edges[0].end.y=2.0;//設(shè)置第一條邊的起點(diǎn)和終點(diǎn)
edges[1].start.x=1.0;
edges[1].start.y=1.0;
edges[1].end.x=2.0;
edges[1].end.y=4.0;
edges[2].start.x=2.0;
edges[2].start.y=2.0;
edges[2].end.x=2.0;
edges[2].end.y=4.0;
for( int i=0; i<3; i++ ) {
computeDistance(edges[i]);//計(jì)算距離
}
for( int i=0; i<3; i++ ) {
outEdge(edges[i]);
}
int mov=3;
sort(edges,edges+mov,compareEdge);//根據(jù)factor排序
for( int i=0; i<3; i++ ) {
outEdge(edges[i]);
}
return 0;
}
上述代碼可以直接復(fù)制到編輯器中 運(yùn)行。
(0)代碼含義:
Edge表示邊,他有兩個(gè)坐標(biāo)點(diǎn),起點(diǎn)和終點(diǎn)。 并且有一個(gè)factor= 起點(diǎn)到終點(diǎn)的距離作為權(quán)值。
有三個(gè)Edge 放置到一個(gè)數(shù)組edges中。 然后根據(jù)factor對(duì)數(shù)組進(jìn)行排序。排序規(guī)則是升序,也即是factor小的在前面
排序函數(shù)是:
bool compareEdge(Edge e1,Edge e2) {//比較函數(shù)
outEdge(e1);
outEdge(e2);
if(e1.factor<e2.factor) {
return true;
}
return false;
}
在排序函數(shù)中輸出 正在被排序的 Edge信息
(1)運(yùn)行結(jié)果:
(2) 從上面的輸出來(lái)看 紅色方框內(nèi) 是排序函數(shù)的輸出,發(fā)現(xiàn)dis 都是0,也就是factor都是0,這個(gè)是怎么回事??
當(dāng)前正在被排序的三條邊的信息是:
(1.000000 ,1.000000)->(2.000000,2.000000) ,dis:1.414214
(1.000000 ,1.000000)->(2.000000,4.000000) ,dis:3.162278
(2.000000 ,2.000000)->(2.000000,4.000000) ,dis:2.000000
為什么排序函數(shù)中看到的Edge信息 都是: dis 000
我使用sort 的方式不對(duì)嗎??
麻煩各位慧眼識(shí)金 點(diǎn)出錯(cuò)誤之處
首先c語(yǔ)言沒(méi)有sort函數(shù),請(qǐng)你搞清楚c和c++的區(qū)別,這是兩個(gè)語(yǔ)言(雖然后者可以部分兼容前者)
<iostream><string><algorithm>這三個(gè)頭文件是c++的,sort在<algorithm>里定義。
還有問(wèn)題標(biāo)簽又帶了個(gè)java,不知道你這是在干嘛
然后我這里運(yùn)行沒(méi)有問(wèn)題
輸出結(jié)果是:
(1.000000 ,1.000000)->(2.000000,2.000000) ,dis:1.414214
(1.000000 ,1.000000)->(2.000000,4.000000) ,dis:3.162278
(2.000000 ,2.000000)->(2.000000,4.000000) ,dis:2.000000
(1.000000 ,1.000000)->(2.000000,4.000000) ,dis:3.162278
(1.000000 ,1.000000)->(2.000000,2.000000) ,dis:1.414214
(1.000000 ,1.000000)->(2.000000,4.000000) ,dis:3.162278
(1.000000 ,1.000000)->(2.000000,2.000000) ,dis:1.414214
(2.000000 ,2.000000)->(2.000000,4.000000) ,dis:2.000000
(1.000000 ,1.000000)->(2.000000,2.000000) ,dis:1.414214
(2.000000 ,2.000000)->(2.000000,4.000000) ,dis:2.000000
(1.000000 ,1.000000)->(2.000000,4.000000) ,dis:3.162278
(2.000000 ,2.000000)->(2.000000,4.000000) ,dis:2.000000
(1.000000 ,1.000000)->(2.000000,2.000000) ,dis:1.414214
(1.000000 ,1.000000)->(2.000000,2.000000) ,dis:1.414214
(2.000000 ,2.000000)->(2.000000,4.000000) ,dis:2.000000
(1.000000 ,1.000000)->(2.000000,4.000000) ,dis:3.162278
建議檢查編譯環(huán)境
北大青鳥(niǎo)APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國(guó)家
北大青鳥(niǎo)中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過(guò)二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_(kāi)發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
曾工作于聯(lián)想擔(dān)任系統(tǒng)開(kāi)發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開(kāi)發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開(kāi)發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問(wèn),美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。