অ্যালগরিদম রিফ্রেশার। কেন হিপসোর্টটি একটি ইনসর্ট অ্যালগরিদম হয়?


15

আমি দেখতে পাচ্ছি না কেন হিপসোর্টটি একটি ইনপ্লেস বাছাই হিসাবে বিবেচনা করা হয় অ্যালগরিদম ।

আমি একটি অতিরিক্ত মানে বাছাই করার জন্য অ্যারের উপাদানগুলি সহ ডেটা স্ট্রাকচার অর্থাৎ একটি গাদা, ন্যূনতম মান এবং বাছাইয়ের প্রক্রিয়াটি নিষ্কাশন করতে সহায়তা করতে ব্যবহৃত হয়।

তাহলে আমি কি এখানে অন্তর্ভুক্তির সংজ্ঞাটি ভুল বুঝছি?

তবে উদাহরণস্বরূপ সন্নিবেশ সাজানোর বিষয়টি স্পষ্টতই অনুমান করা হয় যে এটি স্থান অ্যালগরিদ, অর্থাত্ উপাদানগুলির জন্য কোনও অতিরিক্ত মেমরির প্রয়োজন নেই।

তবে কেন এটি অন্তর্ভুক্ত হিসাবে বিবেচনা করা হয়?

উত্তর:


12

আমি বোঝাতে চাইছি বাছাই করার জন্য অ্যারের উপাদানগুলি সহ একটি অতিরিক্ত ডেটা স্ট্রাকচার অর্থাৎ একটি গাদা, ন্যূনতম মান এবং বাছাইয়ের প্রক্রিয়াটি নিষ্কাশন করতে সহায়তা করতে ব্যবহৃত হয়।

না। অ্যারে ও (1) অতিরিক্ত মেমরির বেশি ব্যবহার না করে গাদা বাধায় রূপান্তরিত হয়। (আসলে আপনাকে যা দরকার তা হ'ল অদলবদলের উদ্দেশ্যে অ্যারের একটি উপাদান ধরে রাখার জন্য অতিরিক্ত মেমোরি যথেষ্ট, বুলিয়ান বা দুটি এবং একটি লুপ ভেরিয়েবল বা দুটি)।

ঠিক আছে, কোনও প্রযুক্তিগত ক্ষেত্রে এটি হতে পারে যে হিপসোর্টটি সাধারণত একটি পৃথক হিপ ব্যবহার করে ব্যাখ্যা করা হয় তবে এটি জায়গায় জায়গায় প্রয়োগ করা একেবারে সম্ভব।


3
আমি পৃথক হিপ (কোডে) দিয়ে "হিপসোর্ট" দেখার একমাত্র জায়গাটি হাস্কেলের মতো একটি কার্যকরী ভাষায়, একই কারণে যে সাধারণ ক্রিয়ামূলক "কুইকোর্ট" স্থানে নেই - ফাংশনাল প্রোগ্রামারদের মতো তাদের তালিকাগুলি প্রচুর, এবং একটি অন্তর্নির্মিত সাজানো স্থিতিশীল - এটি অ্যারের স্থিতি পরিবর্তন করে / যা কিছু তথ্য রয়েছে। ভীতি-উদ্ধৃতি কারণ আমি সত্যিই স্বীকার করি না যে কোনও স্থানের বাইরে থাকা কুইকোর্টটি আদৌ একটি চতুষ্কোণ, বা স্থানের বাইরে হিপসোর্টটি একেবারে হিম্পসোর্ট - কমপক্ষে পরিষ্কারভাবে না বলেছি যে এটি ইন-নয় জায়গা।
স্টিভ 314

1
@ স্টিভ 314, আমি মনে করি যে আমি এমন কিছু শিক্ষামূলক উপাদান দেখেছি যা "এটি একটি স্তূপের মধ্যে রাখুন এবং তারপরে উপাদানগুলিকে একবারে বাইরে বের করে একটি অ্যারেতে রাখুন" এর ফলশ্রুতিতে কিছু বলে। তবে সবেমাত্র সিএলআর পরীক্ষা করে আমি জানাতে পারি যে তারা কোনও স্থানের সংস্করণ দেখায়।
পিটার টেলর

2
@ পিটারটেলর: হ্যাঁ, আমি যে বইটি পর্যালোচনা করছি (স্কিয়েনা) একটি অতিরিক্ত গাদা তৈরি করে হিপসোর্ট উপস্থাপন করেছে।
ব্যবহারকারী 10326

4

গাছের বিন্যাস নির্দিষ্ট করতে কোনও অ্যারে ব্যবহার করা যেতে পারে এমন মৌলিক বোঝাপড়াটি আপনি হারিয়ে ফেলছেন।

মনে করুন আপনার কাছে একটি বাইনারি গাছ রয়েছে, এবং একটি অভ্যন্তর নোড অ্যারের সূচক i তে রয়েছে। তারপরে সেই নোডের পিতামাতার এবং বাচ্চাদের অ্যারে সূচকটি পাওয়া যাবে:

Parent(i) = floor(i/2)
Left child(i) = 2i
Right child(i) = 2i + 1

দেখা:

http://www.personal.kent.edu/~rmuhamma/Algorithms/MyAlgorithms/Sorting/heapSort.htm

যেহেতু হ্যাপটি পুরোপুরি একটি অ্যারেতে রাখা এবং সংগঠিত করা যায়, তারপরে হিপসোর্টটি ইনপুট অ্যারের অভ্যন্তরের উপাদানগুলিকে ঘুরিয়ে নিয়ে জায়গায় জায়গায় চলতে পারে। প্রকৃতপক্ষে, গাদাটি মূল ইনপুট অ্যারে ব্যবহার করে তৈরি এবং ম্যানিপুলেটেড।


: আমি এটি সম্পর্কে জানি problems সমস্যাগুলি দেখে মনে হচ্ছে যে বইটি আমি পড়ছি সেগুলি পৃথক হিপ ব্যবহার করে হিপসোর্টটি উপস্থাপন করেছে I আমি বুঝতে পারি নি বা এই উপস্থাপনাটি অ্যালগরিদমটি বোঝার জন্য সহজতর করা হয়েছে (সম্ভবত? কেন নিশ্চিত ছিল না তা নিশ্চিত নয়) এর মতো উপস্থাপিত)
ব্যবহারকারী 10326

আমি আপনাকে করমেন, ইত্যাদি ইত্যাদি দ্বারা "অ্যালগরিদমের ভূমিকা" বইটি কিনে দেওয়ার জন্য সুপারিশ করব। এটি স্পষ্টভাবে সমস্ত অ্যালগোরিদম সম্পর্কিত প্রশ্নের উত্তর দেয়। আপনি যদি কম্পিউটার বিজ্ঞানী বা সফটওয়্যার ইঞ্জিনিয়ার হিসাবে ক্যারিয়ার সম্পর্কে গুরুতর হন তবে আপনার এই বইটি থাকা দরকার।
stackoverflowuser2010

1

যদি আপনি যেমন বলেন, হিপ তৈরির জন্য সত্যিকার অর্থেই অতিরিক্ত কাঠামোর প্রয়োজন হয় তবে হিপসোর্টটি বাস্তবে কোনও বাছাই করা অ্যালগরিদম হতে পারে না।

তবে, এই ক্ষেত্রে হয় না। আপনি খুব একই অ্যারে বাছাই করতে চান তার উপর গাদাটি তৈরি করতে পারেন এবং এর পরে আপনি হিপসোর্টটি অ্যালগরিদম প্রয়োগ করেন, সুতরাং এটি স্থান অনুসারে সাজায়।


মূলত, একটি "হ্যাপিফাই" অ্যালগরিদম রয়েছে যা একটি অ্যারেতে ডেটা পুনরায় অর্ডার করতে ব্যবহৃত হয় যাতে এটি আইআইআরসি ও (এন) সময়ে একটি গাদা নিয়ম মেনে চলে। প্রোগ্রামার্স.স্ট্যাকেক্সেঞ্জা.কম / সেকশনস / ১১6৯০৪/২ এ সিউডোকোডটি দেখুন । তারপরে, এটি বেশিরভাগ ক্ষেত্রে পুনরাবৃত্তি হিপ রুট-এক্সট্রাক্ট করার এবং অ্যারেটির কত অংশ এখনও "হিপ" রয়েছে এবং কতগুলি শেষ-ফলাফল অনুসারে বাছাই করা হচ্ছে তা ট্র্যাক করা।
স্টিভ 314

0

কম্পিউটার সায়েন্সে, ইন-প্লেস অ্যালগরিদম (বা সিটি-তে লাতিন ভাষায়) একটি অ্যালগরিদম যা একটি ছোট, ধ্রুব পরিমাণ অতিরিক্ত স্টোরেজ স্পেস সহ ডেটা স্ট্রাকচার ব্যবহার করে ইনপুটকে রূপান্তর করে। ইনপুটটি সাধারণত অ্যালগরিদম কার্যকর হওয়ার সাথে সাথে আউটপুট দ্বারা ওভাররাইট করা হয়। একটি অ্যালগরিদম যা স্থান না হয় কখনও কখনও স্থান নিক্ষেপ বা বাহিরে বলা হয়।

উইকিপিডিয়া - ইন-প্লেস অ্যালগরিদম


তাহলে কেন মার্জসর্টকে স্থানের অ-অ্যালগরিদম হিসাবে বিবেচনা করা হয়?
ব্যবহারকারী 10326

3
এটি কোনও কার্যকর উত্তর নয়। হ্যাপসোর্টের সাথে এর কোনও সম্পর্ক নেই এবং প্রশ্নের উত্তর দেয় না।
stackoverflowuser2010

হ্যাপসোর্টের সাথে অবশ্যই এটির কিছু আছে। সংজ্ঞা থেকে পরিষ্কার হওয়া উচিত হিপসোর্ট একটি ইন-প্লেস সাজানোর অ্যালগরিদম। আসলে এটি হিপসোর্ট পৃষ্ঠা থেকে লিঙ্ক করা হয়েছিল।
রেন হেনরিচস

0

এটি স্থান বিবেচনা করা হয় কারণ এটির স্থানের প্রয়োজনীয়তাগুলি নগন্য ( MergeSort উদাহরণস্বরূপ, জায়গায় নেই কারণ অনুসন্ধান উদাহরণের প্রতিটি পুনরাবৃত্তিতে ইনপুট সেটটি পরিবর্তন করা হয়নি।

ইন-প্লেস অ্যালগরিদম এবং স্থানের বাইরে অ্যালগরিদমের মধ্যে পার্থক্য বোঝানোর সর্বোত্তম উপায়টি সম্ভবত নিম্নলিখিত সি / সি ++ স্ট্রিং রিভার্সাল কোডটি দেখায় যা এটি (K&R থেকে) করে:

void reverse(char s[])
{
      int c, i, j;

      for (i = 0, j = strlen(s)-1; i < j; i++, j--) {
         c = s[i];
         s[i] = s[j];
         s[j] = c;
      }
}

আপনি যদি উদাহরণস্বরূপ, শেষ থেকে ইনপুট স্ট্রিংটি পড়তে এবং অক্ষরগুলিকে অন্য কোনও বাফারে রেখেছিলেন তবে এটি স্থানের বাইরে থাকা স্ট্রিংটির বিপরীত অ্যালগরিদম হবে।


1
Mergesort বিরক্তিকরভাবে অভিযুক্ত করা হয় - ভুলভাবে নিজেকে বোঝানো সহজ যে আপনার একটি স্থানের কৌশল রয়েছে। সাধারণত, এটি কেবলমাত্র ছোট অ্যারেগুলির জন্য কাজ করে। যাইহোক, আমি আমি একবার যেখানে কেউ একটি কাগজ ডাউনলোড করা মনে করেনি আউট একত্রীকরণ-সাজানোর আলগোরিদিম একটি ইন-জায়গা বৈকল্পিক হবে। আমি আবার খুঁজে পেতে পারি কিনা তা দেখতে পাব।
স্টিভ 314
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.