সি 144 163
#define f float
f T, *C, m;
f *q(f *A, f *B, int S, f s)
{
if(m)
return abs(T - *A) - abs(T - *B);
for (
C = malloc(S * 4);
m = S--;
C[S] = *B
)
T = A[S],
qsort(B, s, 4, q);
return C;
}
ঠিক আছে ... আমি মনে করি এই ছোট কোডটির ব্যাখ্যা দরকার।
প্রথমে আমি নূন্যতম পার্থক্যের সন্ধান করার জন্য দুটি স্তরের লুপ দিয়ে কাজটি করার চেষ্টা করেছি এবং বর্তমান মানটি বি এর মানকে ন্যূনতম এ সেট করব। এটা খুব বেসিক।
Qsort এবং একটি তুলনামূলক ফাংশন দিয়ে একই জিনিস পৌঁছে যেতে পারে । আমি এটিকে বি এর উপাদানগুলির পরিবর্তে পার্থক্য অনুসারে বাছাই করি। এই জাতীয় অ্যালগরিদমের জন্য অনেকগুলি ফাংশন। সুতরাং ফাংশন q এখন দুটি উদ্দেশ্য পরিবেশন করে। প্রথমদিকে, এটি নিজেই অ্যালগরিদম, দ্বিতীয়ত (যখন কুইসোর্ট এটিকে কল করে) একটি তুলনামূলক। দুই রাষ্ট্রের মধ্যে যোগাযোগের জন্য, আমাকে বিশ্বব্যাপী ঘোষণা করতে হয়েছিল।
মিটার এটি তুলনামূলক রাজ্যে বা প্রধান এক হিসাবে দাঁড়িয়েছে for
উদাহরণ:
float A[] = {1.5, 5.6, 8.9, -33.1};
float B[] = {-20.1, 2.2, 10.3};
float *C;
C = q(A, B, sizeof(A)/sizeof(*A), sizeof(B)/sizeof(*B));
// C holds 2.2,2.2,10.3,-20.1