কোন ধরণের অ্যালগরিদম বেশিরভাগ সাজানো ডেটাতে সেরা কাজ করে? [বন্ধ]


174

কোনটি বাছাই করা অ্যালগরিদম বেশিরভাগ সাজানো ডেটাতে সেরা কাজ করে?


প্রসঙ্গের অভাব থেকে অনুমান করা - আপনি মধ্যবর্তী ফলাফলগুলিকে ডিস্কে ছড়িয়ে দেওয়ার কোনও প্রয়োজন ছাড়াই একটি ইন-মেমোরি সাজানোর বিষয়ে জিজ্ঞাসা করছেন?
জোনাথন লেফলার

1
এই অ্যানিমেশন অনুসারে সন্নিবেশ সাজানো বেশিরভাগ স্রোত করা ডেটাতে সেরা কাজ করে।
ডুপল

উত্তর:


259

অ্যানিমেটেড gifs দেখার অত্যন্ত বৈজ্ঞানিক পদ্ধতির উপর ভিত্তি করে আমি বলব সন্নিবেশ এবং বুদ্বুদ প্রকারগুলি ভাল প্রার্থী।


19
উপায় দ্বারা এটি একটি দুর্দান্ত লিঙ্ক,
কুডোস

5
বুদ্বুদ সাজানোর ভয়ঙ্কর। এটি সর্বদা ও (এন ^ 2) থাকে। দয়া করে এটি সঠিক হওয়ার জন্য অন্তত আপনার উত্তরটির বাইরে নিয়ে যান।
jjnguy

79
jjnguy, এটা ঠিক স্পষ্ট ভুল। আমার মনে হয় আপনার নিজের অ্যালগোরিদম ক্লাসটি আবার নেওয়া দরকার। প্রায় বাছাই করা ডেটাতে (এটি অভিযোজিত ক্ষেত্রে) এটি ও (এন)। যাইহোক, এটি ডেটা দিয়ে 2 পাস নেয় এবং সন্নিবেশটি প্রায় বাছাই করা ডেটার জন্য কেবল 1 নেয়, যা সন্নিবেশকে বিজয়ী করে তোলে। বুদ্বুদ যদিও এখনও ভাল
মিমকডোল

3
পারফরম্যান্সটি সত্যই খারাপভাবে হ্রাস পায় যদি আপনার ডেটা প্রায় সন্ধান না করা হয় তবে। আমি এখনও এটি ব্যক্তিগতভাবে ব্যবহার করব না।
ব্লারগার্ড

5
চেষ্টা করার সময় সেই লিঙ্কটি ভেঙে গেছে। পরিবর্তে এটি ব্যবহার করে দেখুন: বাছাই
মাইকেল লা

107

কেবলমাত্র কয়েকটি আইটেম => সংক্ষেপণ সর্ট

আইটেমগুলি বেশিরভাগই ইতিমধ্যে বাছাই করা হয় => অন্তর্ভুক্তকরণ সর্ট

সবচেয়ে খারাপ পরিস্থিতি সম্পর্কে উদ্বেগিত => হিপ সার্ট

একটি ভাল গড়-কেস ফলাফল => QUICKSORT- এ আগ্রহী

আইটেমগুলি ঘন মহাবিশ্ব => বুকেট সর্ট থেকে আঁকা

যথাসম্ভব কম কোড লেখার আকাঙ্ক্ষা => অন্তর্ভুক্তকরণ সর্ট


1
ঠিক এই ধরণের উত্তরটি আমি খুঁজছিলাম, আমি বইগুলি পড়েছি তবে বিশেষভাবে অ্যালগরিদম নির্বাচনের জন্য আমার কোনও স্পষ্ট ব্যাখ্যা খুঁজে পাওয়া যাচ্ছে না, আপনি কি দয়া করে এইটি বিস্তারিতভাবে বর্ণনা করতে পারেন বা একটি লিঙ্কটি পাস করতে পারেন যাতে আমি কুকুরটি পেতে পারি আরও কিছুটা? ধন্যবাদ
সিমরান কাউর

9
আপনার যুক্ত করা উচিত "ডেটা ইতিমধ্যে অন্য মাপদণ্ড অনুসারে বাছাই করা হয়েছে => মার্জ সার্ট"
জিম হুনজিকার

30

timsort

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


16
লগ (এন!) হ'ল Ο (n * লগ (এন)) সুতরাং এটি "অতিপ্রাকৃত" নয়।
jfs

এখানে জেডি কে
টিম

লগ (এন!) দ্রুত নয়। wolframalpha.com/input/?i=plot ‍Bllog (N !) , {এন, 0,1000}]
বেহরোজ

9
@ জেএফ সেবাস্তিয়ান: lg(n!)প্রায় সাজানো অ্যারেতে তুলনামূলক তুলনায় টাইমসোর্টটি অনেক দ্রুত O(n)! | @behrooz: কোন তুলনা সাজানোর চেয়ে ভাল গড় ক্ষেত্রে থাকতে পারে O(n log n), এবং lg(n!)হয় O(n log n)। তাই টাইমসোর্টের সবচেয়ে খারাপ পরিস্থিতি অনায়াসেই অন্য কোনও তুলনা বাছাইয়ের চেয়ে খারাপ নয়। তদুপরি এর সর্বোত্তম কেস অন্য তুলনা বাছাইয়ের চেয়ে ভাল বা সমান।
আর্টিলিয়াস

3
টিমসোর্ট এখনও সবচেয়ে খারাপ ক্ষেত্রে ও (এনলগন) তবে এর ভাল-কেসগুলি বেশ আনন্দদায়ক। এখানে কয়েকটি গ্রাফের সাথে একটি তুলনা করা হয়েছে: stromberg.dnsalias.org/~strombrg/sort-c तुलना তুলনা করুন যে সিথনের টিমসোর্টটি পাইথনের নির্মিত টাইমসোর্ট প্রায় তত দ্রুত ছিল না Cy
ব্যবহারকারী 1277476

19

নিম্নলিখিত আচরণের সাথে সন্নিবেশ সাজান:

  1. kস্লটগুলির প্রতিটি উপাদানের জন্য 1..n, প্রথমে পরীক্ষা করে দেখুন el[k] >= el[k-1]। যদি তা হয় তবে পরবর্তী উপাদানটিতে যান। (স্পষ্টতই প্রথম উপাদানটি এড়িয়ে যান))
  2. যদি তা না 1..k-1হয় তবে সন্নিবেশের অবস্থানটি নির্ধারণ করতে উপাদানগুলিতে বাইনারি-অনুসন্ধান ব্যবহার করুন , তারপরে উপাদানগুলি স্কুট করুন। (আপনি এই শুধুমাত্র যদি কি হতে পারে k>Tযেখানে T; ছোট কিছু থ্রেশহোল্ড মান kএই Overkill হয়।)

এই পদ্ধতিটি কমপক্ষে তুলনা করে।


আমি মনে করি বুদ্বুদ সাজানোর ফলে এটিকে পরাজিত করা যেতে পারে যদি অরসোর্টড উপাদানগুলির সংখ্যা খুব অল্প হয় (যেমন, এক বা দুটি) তবে সাধারণভাবে এটি আমাকে সম্ভবত সেরা সমাধান হিসাবে আঘাত করে।
সল

পদক্ষেপ 1 এর কারণে, ইতিমধ্যে সাজানো যে কোনও উপাদানগুলির জন্য ঠিক একটি তুলনা এবং শূন্য ডেটা-মুভ রয়েছে, যা সম্ভবত আপনি সবচেয়ে ভাল করতে পারেন। দ্বিতীয় ধাপটি হ'ল আপনি যা উন্নতি করতে পারবেন তবে বুদবুদ একই সংখ্যক উপাদানকে সরিয়ে নিয়ে যাবে এবং আপনার ইমপ্লের উপর নির্ভর করে আরও তুলনা করতে পারে।
জেসন কোহেন

প্রকৃতপক্ষে, আরও চিন্তায় আমি মনে করি যে বুদ্বুদ সাজানো আমার চিন্তাভাবনার চেয়ে আরও শক্তিশালী। এটি আসলে একটি মোটামুটি প্রশ্ন। উদাহরণস্বরূপ, আপনি যদি তালিকাটি সম্পূর্ণরূপে সাজানো থাকে এমন ক্ষেত্রেটি নিয়ে যান যা সর্বশেষে থাকা উচিত উপাদানটি বাদে, বুদ্বুদ সাজানোর মাধ্যমে আপনি যা বর্ণনা করেছেন তা ব্যাপকভাবে ছাপিয়ে যাবে।
সল

আমি এটি বাস্তবায়নের চেষ্টা করেছি কিন্তু বাইনারি অনুসন্ধানের কোনও উন্নতি হয় না যেহেতু আপনাকে এখনও উপাদানটি সন্নিবেশ করতে পুরো ব্লকটি সরিয়ে নিতে হবে। সুতরাং 2xran পরিবর্তে আপনি পরিসীমা + লগ (পরিসর) পান।
এই

11

অন্তর্মুখী সাজানোর চেষ্টা করুন। http://en.wikipedia.org/wiki/Introsort

এটি কুইকোর্ট ভিত্তিক, তবে এটি প্রায় বাছাই করা তালিকার জন্য কুইকোর্টের সবচেয়ে খারাপ ক্ষেত্রে আচরণটি এড়ায়।

কৌশলটি হ'ল এই বাছাই-অ্যালগরিদমগুলি এমন কেসগুলি সনাক্ত করে যেখানে কুইকোর্টটি সবচেয়ে খারাপ ক্ষেত্রে মোডে যায় এবং স্যুইচ বা মার্জ সাজানোর দিকে স্যুইচ করে। কিছু বাছাই করা পার্টিশন পদ্ধতি দ্বারা প্রায় বাছাই করা পার্টিশন সনাক্ত করা যায় এবং সন্নিবেশ সাজানোর মাধ্যমে ছোট পার্টিশন পরিচালনা করা হয়।

আরও বেশি কোড এবং জটিলতার জন্য আপনি সমস্ত বড় বাছাইকরণ অ্যালগরিদমগুলির মধ্যে সেরা পান। এবং আপনি নিশ্চিত হতে পারেন যে আপনি কখনই আপনার ডেটা দেখতে কেমন তা বিবেচনা করে সবচেয়ে খারাপ ক্ষেত্রে আচরণ করবেন না।

আপনি যদি কোনও সি ++ প্রোগ্রামার হন তবে আপনার এসটিডি :: বাছাই অ্যালগরিদমটি পরীক্ষা করে দেখুন। এটি ইতিমধ্যে অভ্যন্তরীণভাবে অন্তর্মুখী বাছাই করতে পারে।


7

স্প্লেসর্ট স্প্লে গাছের উপর ভিত্তি করে একটি অস্পষ্ট বাছাই পদ্ধতি , এক ধরণের অভিযোজিত বাইনারি গাছের । স্প্লেসর্ট কেবল আংশিকভাবে বাছাই করা ডেটার জন্যই ভাল নয়, তবে আংশিকভাবে বিপরীত-সাজানো ডেটা বা সত্যই যে কোনও উপায়ে যে কোনও ধরণের প্রাক-বিদ্যমান ক্রম রয়েছে। এটি সাধারণ ক্ষেত্রে ও (এনলগন) এবং ও (এন) ক্ষেত্রে ডেটাটি কোনওভাবে সাজানো হয় (ফরোয়ার্ড, বিপরীত, অঙ্গ-পাইপ ইত্যাদি),

সন্নিবেশ সাজানোর ক্ষেত্রে এটির দুর্দান্ত সুবিধাটি হ'ল ডেটি একেবারে সাজানো না গেলে এটি ও (N ^ 2) আচরণে ফিরে আসে না, সুতরাং আপনার ব্যবহারের আগে ডেটা আংশিকভাবে সাজানো হয়েছে তা আপনার একেবারে নিশ্চিত হওয়া উচিত নয় data ।

এর অসুবিধা হ'ল স্প্লে গাছের কাঠামোর অতিরিক্ত স্থান ওভারহেড, সেইসাথে স্প্লে গাছটি তৈরি ও ধ্বংস করার জন্য প্রয়োজনীয় সময়। তবে আপনি যে ডেটা এবং প্রাক-বাছাইয়ের প্রত্যাশা করেছেন তার পরিমাণের উপর নির্ভর করে গতি বাড়ানোর জন্য ওভারহেড উপযুক্ত হতে পারে।

স্প্লেসোর্ট সম্পর্কিত একটি কাগজ সফ্টওয়্যার - অনুশীলন ও অভিজ্ঞতাতে প্রকাশিত হয়েছিল।



5

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

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


অন্যান্য বাছাই করা অ্যালগরিদমের তুলনায় স্মুডসোর্টের রানটাইম ধ্রুবকগুলি কী? (যেমন রানটাইম (স্মুথসোর্ট) / রানটাইম (সন্নিবেশ) একই ডেটার জন্য)
আর্নে বাবেনহাউরিহাইড

4

যদি উপাদানগুলি ইতিমধ্যে বাছাই করা হয় বা কেবল কয়েকটি উপাদান থাকে তবে সন্নিবেশ অনুসারে বাছাইয়ের জন্য এটি ব্যবহারের উপযুক্ত হবে!


3

সন্নিবেশ সাজানোর সময় লাগে O (n + বিপর্যয়ের সংখ্যা)।

একটি বিপর্যয় একজোড়া হয় (i, j)যেমন যেi < j && a[i] > a[j] । তা হল, একটি আউট অফ-অর্ডার জুটি।

"প্রায় বাছাই করা" হওয়ার একটি পরিমাপ হ'ল বিপর্যয়ের সংখ্যা --- কেউ কিছু বিপর্যয় সহ ডেটা বোঝাতে "প্রায় বাছাই করা ডেটা" নিতে পারে। যদি কেউ জেনে থাকে যে বিবর্তনের সংখ্যাটি লিনিয়ার হতে পারে (উদাহরণস্বরূপ, আপনি কেবলমাত্র সাজানো তালিকায় ও (1) উপাদান যুক্ত করেছেন), সন্নিবেশ সাজানোর ক্ষেত্রে ও (এন) সময় লাগে।


2

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

সাধারণভাবে, সারণি সারণির মতো অ্যালগরিদমগুলি বেছে নেওয়ার ক্ষেত্রে সমস্যাটি সিদ্ধান্ত নেওয়ার সময় যখন ডেটা যথেষ্ট পরিমাণে অর্ডারের বাইরে থাকে যে কুইকসোর্ট সত্যিই দ্রুত হবে।


2

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

N কে আইটেমের মোট সংখ্যা হতে দিন, M-এর বাইরে থাকা অর্ডার।

বুদ্বুদ সাজানোর জন্য সমস্ত এন আইটেমগুলিতে 2 * এম + 1 পাসের মতো কিছু তৈরি করতে হবে। এম যদি খুব ছোট হয় (0, 1, 2?), আমার মনে হয় এটি মারতে খুব কঠিন হবে।

যদি এম ছোট হয় (লগ এন এর চেয়ে কম বলুন), সন্নিবেশ সাজানোর দুর্দান্ত গড় পারফরম্যান্স থাকবে। যাইহোক, যদি এমন কোন কৌশল না দেখি যা আমি না দেখি তবে এটির মধ্যে খুব খারাপ পরিস্থিতি রয়েছে। (ঠিক আছে? যদি ক্রমে শেষ আইটেমটি প্রথম আসে, তবে আপনাকে প্রতিটি আইটেম sertোকাতে হবে, যতদূর আমি দেখতে পাচ্ছি, যা কার্যকারিতাটি মেরে ফেলবে)) আমি অনুমান করছি যে এর জন্য আরও একটি নির্ভরযোগ্য বাছাই করা অ্যালগরিদম আছে out কেস, কিন্তু আমি জানি না এটি কী।

যদি এম বড় হয় (লগ এন এর চেয়ে সমান বা দুর্দান্ত বলুন), অন্তঃনির্দেশক সাজান প্রায় অবশ্যই সেরা।

এই সমস্ত ব্যতীত: যদি আপনি যদি আগেই অবধি জানেন যে কোন উপাদানগুলি অনুসৃত নয়, তবে আপনার সেরা বাজি হ'ল items আইটেমগুলি টেনে আনা, অন্তর্মুখী বাছাই করে বাছাই করা এবং দুটি সাজানো তালিকাগুলি এক সাথে সাজানো তালিকায় একত্রীকরণ করা। কোন আইটেমগুলি ক্রমহীন রয়েছে তা যদি আপনি তাড়াতাড়ি বুঝতে পারতেন তবে এটিও একটি ভাল সাধারণ সমাধান হতে পারে - তবে আমি এটি করার কোনও সহজ উপায় বের করতে সক্ষম হইনি।

আরও চিন্তাভাবনা (রাতারাতি): যদি এম + 1 <এন / এম হয়, তবে আপনি ক্রমানুসারে একটানা N / M রানের সন্ধানের জন্য তালিকাটি স্ক্যান করতে পারেন এবং তারপরে খুঁজে বের করার জন্য উভয় দিকেই রানটি প্রসারিত করুন can -অর্ডার আইটেম। এটি সর্বাধিক 2N তুলনা করবে। তারপরে আপনি সাজানো আইটেমগুলি বাছাই করতে পারেন এবং দুটি তালিকায় বাছাই করা মার্জ করতে পারেন। মোট তুলনা 4N + এম লগ 2 (এম) এর মতো কিছু থেকে কম হওয়া উচিত, যা কোনও অ-বিশেষায়িত বাছাই করার রুটিনকে পরাজিত করতে পারে বলে আমি মনে করি। (এমনকি আরও ভেবেছিলেন: এটি আমার ভাবনার চেয়ে কৌশলযুক্ত, তবে আমি এখনও মনে করি এটি যথাযথভাবে সম্ভব))

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


1

অ্যালগরিদম বাছাই করার জন্য যদি আপনার নির্দিষ্ট প্রয়োগের প্রয়োজন হয়, ডেটা স্ট্রাকচার বা উপরের কোনও লিঙ্ক রয়েছে এমন যে কোনও কিছু, আমি আপনাকে সুপারিশ করতে পারি কোডপ্লেক্সে "ডেটা স্ট্রাকচারস এবং অ্যালগরিদম" প্রকল্পটি ?

চাকাটিকে পুনরায় উদ্ভাবন না করে এতে আপনার প্রয়োজনীয় সমস্ত কিছু থাকবে।

শুধু আমার সামান্য লবণ দানা।


1

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


0

সাজানো ইনপুটটিতে সন্নিবেশ সাজানো সর্বোত্তম কেস ও (এন)) এবং এটি বেশিরভাগ সাজানো ইনপুট (দ্রুত বাছাইয়ের চেয়ে ভাল) এর খুব কাছে।


0

Ponder গাদা চেষ্টা করুন। আমি বিশ্বাস করি এটি ও (এন এলজি এন) ধরণের সর্বাধিক সুসংগত।


ধারাবাহিকতা এখানে উদ্বেগের নয়। হিপসোর্টটি বাছাই করা ডেটা এমনকি ও (n lg n) দেবে, এবং এটি সত্যই অভিযোজিত নয়। ব্যবহারযোগ্য বিকল্পগুলি হ'ল: সন্নিবেশ বাছাই, টিমসোর্ট এবং বুদবুদোর্ট ort
সর্বাধিক

0

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


0

ভাল এটি ব্যবহারের ক্ষেত্রে নির্ভর করে। কোন উপাদানগুলি পরিবর্তন করা হয়েছে তা যদি আপনি জানেন তবে সরিয়ে ফেলুন এবং সন্নিবেশ করানো আমার পক্ষে যতটা উদাসীন তা সেরা ক্ষেত্রে হবে।


1
এটি "যতদূর আমি উদ্বিগ্ন" অ্যালগরিদম দক্ষতার পরীক্ষাটি আমার দিনকে আলোকিত করেছিল :) গুরুতর হওয়া সত্ত্বেও, "অপসারণ এবং সন্নিবেশ" লেখার সময় আপনার কী সন্নিবেশ বাছাই করা ছিল (যা ইতিমধ্যে পূর্ববর্তী উত্তরে উল্লিখিত ছিল), বা আপনি কি অফার করেন? একটি নতুন ধরণের অ্যালগরিদম? যদি তা হয় তবে দয়া করে আপনার উত্তরটি প্রসারিত করুন।
yoniLavi

0

বুদ্বুদ বাছাই অবশ্যই বিজয়ী রাডার উপরের একটি সন্নিবেশ সাজানোর হবে।


4
একটি উত্তর সহ আপনার উত্তর পোস্ট করুন;

1
আমি অনুরোধ করব যে সদৃশগুলি এড়াতে পোস্ট করার আগে আপনার উপলভ্য উত্তরগুলি একবার দেখুন।
অ্যাঙ্গেইনার

-1

কুইকসোর্ট থেকে দূরে থাকুন - প্রাক-সাজানো ডেটার জন্য এটি অত্যন্ত অদক্ষ। সন্নিবেশ সাজানোর কাজটি যথাসম্ভব কয়েকটি মান সরিয়ে প্রায় সাজানো ডেটা ভালভাবে পরিচালনা করে।


-1 কুইকসোর্টের প্রতিটি শিল্প প্রয়োগের একটি যুক্তিসঙ্গত
পাইভট

1
হ্যাঁ, তবে কোনও পাইভট নির্বাচনটি ব্যয়বহুল না হলে উপযুক্ত নয়।
ব্যবহারকারী 1277476
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.