作者bleed1979 (十三)
看板C_and_CPP
标题Re: [问题] 想请问较佳的程式写法
时间Fri Mar 27 15:13:50 2009
如果排序不晓得有没比较快
LENG = 10, L = 2
value 0 4 9 2 5 8 1 6 3 7
index 0 1 2 3 4 5 6 7 8 9
sort过後
value 0 1 2 3 4 5 6 7 8 9
index 0 6 3 8 1 4 7 9 5 2
for(i = 0; i + L < LENG; ++i)
{
for(j = i + 1; j < i + L; ++j)
{
if(abs(index[i] - index[j]) < L)
{
printf("%d %d\n", array[i], array[j]);
}
}
}
照这题来说是没有输出的
不过这方法只须对右手边小於L的数, 但多了排序时间, 和多存一个index阵列
这是我想的, 不确定对, 请找测资run run看
Bleed
※ 引述《DennisTang ()》之铭言:
: 有一个长度为LENG的一维不重复整数乱数阵列
: 其中整数乱数的值布於0~LENG-1
: 我希望阵列中的某一元素与其index距离小於L的元素 其内容的绝对值的差都要大於L
: 举例如下:
: LENG = 10, L = 2
: 0 4 9 2 5 8 1 6 3 7
: 与0距离小於L的值:4 abs(0-4)>2
: 与4距离小於L的值:0 9 abs(4-0)>2 abs(4-9)>2
: 与9距离小於L的值:4 2 abs(9-4)>2 abs(9-2)>2
: 与2距离小於L的值:9 5 abs(2-9)>2 abs(2-5)>2
: ......
: 依此类推
: 我完成的程式在下面(包含检查程式) 但是我是用硬凑的方法来写的
: 所以当LENG很长的时候会非常的慢
: 我想请问这种问题有没有什麽技巧呢?
: http://rafb.net/p/Vcfor716.html
--
World of bleed1979
http://bleed1979.myweb.hinet.net/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.168.141.226
1F:→ DennisTang:嗯嗯 这样测试的确快很多 03/27 16:08
※ 编辑: bleed1979 来自: 118.168.141.226 (03/27 16:22)