පටුන[සඟවන්න][පෙන්වන්න]
පරිගණක විද්යාව යනු ඇල්ගොරිතම සහ දත්ත ව්යුහයන්ගේ සංකීර්ණතා අවබෝධ කර ගැනීමයි.
ඔබට වර්ග කළ යුතු අයිතම ලැයිස්තුවක් ඇත, නමුත් ඔබට වඩාත් සංකීර්ණ වර්ග කිරීමේ ඇල්ගොරිතමයක් භාවිතා කිරීමට කාලය හෝ සම්පත් නොමැත.
ඇතුළත් කිරීම් වර්ග කිරීම සරලම වර්ග කිරීමේ ඇල්ගොරිතම වලින් එකකි, නමුත් විශාල ලැයිස්තු සඳහා එය මන්දගාමී විය හැක.
පහසු ක්රියාත්මක කිරීම සහ අවබෝධය මෙම ක්රමය ක්රමලේඛකයින් අතර ප්රියතම එකක් බවට පත් කර ඇත. කුඩා ලැයිස්තු සඳහා හෝ ඔබට ඉක්මන් විසඳුමක් අවශ්ය වූ විට එය පරිපූර්ණයි.
මෙම බ්ලොග් සටහනෙහි, අපි ඇතුළත් කිරීම් වර්ග කිරීමේ කාල සංකීර්ණත්වය දෙස බලමු. මෙම ඇල්ගොරිතම අරා වර්ග කිරීමට භාවිතා කරන අතර එහි ධාවන කාලය O(n2) මෙයින් අදහස් කරන්නේ අරාවේ විශාලත්වය සමඟ කාල සංකීර්ණත්වය වැඩි වන බවයි.
කෙසේ වෙතත්, මෙම ඇල්ගොරිතම Quicksort වැනි අනෙකුත් වර්ග කිරීමේ ඇල්ගොරිතම වලට වඩා බොහෝ විට වේගවත් විය හැක.
ඇතුළත් කිරීම් වර්ග කිරීම ක්රියා කරන ආකාරය දෙස සමීපව බලමු!
ඇතුළත් කිරීම් වර්ග කිරීමේ ඇල්ගොරිතම යනු කුමක්ද?
වරකට එක් මූලද්රව්යයක්, ඇතුළත් කිරීම් වර්ග කිරීම වර්ග කළ හැකි අරාවක් ජනනය කරයි, එය නිතර ලැයිස්තුවක් ලෙස හැඳින්වේ.
උදාහරණයක් ලෙස, කම්පිලර් වැනි සංකීර්ණ පරිගණක වැඩසටහන් වල වර්ග කිරීම යෙදේ, එහිදී වැඩසටහනේ අර්ථ නිරූපණයට ටෝකන අනුපිළිවෙල වැදගත් වේ.
ඇතුළත් කිරීමේ අනුපිළිවෙල ක්රියා කරන්නේ කෙසේද?
අපි අරාවක් වර්ග කිරීමට ඇතුළත් කිරීමේ අනුපිළිවෙල භාවිතා කරන විට, ඇල්ගොරිතම ආරම්භ වන්නේ ලැයිස්තුවේ ඇති කුඩාම අයිතමය සොයාගෙන එය නිවැරදි ස්ථානයට ඇතුළත් කිරීමෙනි.
ඉන්පසු එය ඊළඟ කුඩාම අයිතමය සොයාගෙන එය නිවැරදි ස්ථානයට ඇතුළු කරයි, යනාදිය.
ඇල්ගොරිතම ක්රියා කරන්නේ ලැයිස්තුව හරහා ලූප් කිරීමෙන්, සෑම අයිතමයක්ම එයට පෙර එන අයිතමයට සංසන්දනය කිරීමෙනි.
අයිතම වැරදි පිළිවෙලට තිබේ නම්, ඇල්ගොරිතම ඒවා මාරු කරයි. එය ලැයිස්තුව අනුපිළිවෙලට සකසන්නේ දැයි පරීක්ෂා කරයි, එය එසේ නම්, ඇල්ගොරිතම අවසන් වේ.
ප්රායෝගිකව, ඇතුළත් කිරීමේ වර්ග කිරීම බොහෝ විට ක්රියාත්මක කරනු ලබන්නේ කේත පේළි කිහිපයක් භාවිතයෙන් වන අතර එය කුඩා අරා වර්ග කිරීම සඳහා ජනප්රිය තේරීමක් කරයි. කෙසේ වෙතත්, මෙම ඇල්ගොරිතම භාවිතා කරන විට කාල සංකීර්ණත්වය සැලකිල්ලට ගත යුතුය.
උදාහරණයක්:
ඇතුළත් කිරීම් වර්ග කිරීම ක්රියා කරන ආකාරය පිළිබඳ උදාහරණයක් මෙන්න. අපි පහත අරාව භාවිතා කරන්නෙමු:
1, 2, 3, 4, 5, 6
ඇල්ගොරිතම ආරම්භ වන්නේ ලැයිස්තුවේ ඇති කුඩාම අයිතමය සොයා ගැනීමෙනි, එනම් 1. එය නිවැරදි ස්ථානයට, පළමු ස්ථානයට ඇතුල් කරයි. එය ඊළඟට කුඩාම අයිතමය සොයා ගනී, එනම් 2. එය නිවැරදි ස්ථානයට ඇතුල් කරයි, එය දෙවන ස්ථානයයි.
ඉන්පසු එය ඊළඟ කුඩාම අයිතමය සොයා ගනී, එනම් 3. එය එය තුන්වන ස්ථානය වන නිවැරදි ස්ථානයට ඇතුල් කරයි.
ඉන්පසු එය ඊළඟ කුඩාම අයිතමය සොයා ගනී, එනම් 4. එය එය හතරවන ස්ථානය වන නිවැරදි ස්ථානයට ඇතුළු කරයි, යනාදිය. ලැයිස්තුව දැන් වර්ග කර ඇත!
ලැයිස්තුව වර්ග කිරීමට ඇල්ගොරිතමයට සැසඳීම් සහ හුවමාරු හයක් ගන්නා බව උදාහරණයෙන් අපට පෙනේ. මෙය n ගන්නා බැවිනි2 n අයිතම ලැයිස්තුවක් වර්ග කිරීමට සැසඳීම් සහ හුවමාරු කිරීම්. මෙම අවස්ථාවේදී, n=6.
ඇතුළත් කිරීමේ වර්ග කිරීමේ කාල සංකීර්ණතාව වැඩි දියුණු කරන්නේ කෙසේද?
ඇතුළත් කිරීමේ අනුපිළිවෙලට O(n. ධාවන කාලයක් ඇත2), Quicksort වැනි වඩා හොඳ වර්ග කිරීමේ ඇල්ගොරිතමයක් භාවිතා කිරීමෙන් එය වැඩිදියුණු කළ හැක.
Quicksort සතුව O(n log n) ධාවන කාලයක් ඇත, එය O(n)ට වඩා ඉතා වේගවත්ය2).
කෙසේ වෙතත්, සමහර අවස්ථාවලදී, ඇතුළත් කිරීම් වර්ග කිරීම ඉක්මන් වර්ග කිරීමට වඩා වේගවත් විය හැක.
උදාහරණයක් ලෙස, ලැයිස්තුව දැනටමත් පිළිවෙලට තිබේ නම්, ඇතුළත් කිරීම් වර්ග කිරීම ඉක්මන් වර්ග කිරීමට වඩා අඩු කාලයක් ගතවේ.
ප්රායෝගිකව, ඇතුළත් කිරීමේ වර්ග කිරීම බොහෝ විට ක්රියාත්මක කරනු ලබන්නේ කේත පේළි කිහිපයක් භාවිතයෙන් වන අතර එය කුඩා අරා වර්ග කිරීම සඳහා ජනප්රිය තේරීමක් කරයි.
කෙසේ වෙතත්, මෙම ඇල්ගොරිතම භාවිතා කරන විට කාල සංකීර්ණත්වය සැලකිල්ලට ගත යුතුය.
කාල සංකීර්ණතා
නරකම අවස්ථාව සංකීර්ණත්වය O(n2):
අරාවේ විශාලත්වය සමඟ කාල සංකීර්ණත්වය වැඩි වේ. එය n ගනී2 n අයිතම ලැයිස්තුවක් වර්ග කිරීමට සැසඳීම් සහ හුවමාරු කිරීම්.
උදාහරණයක් ලෙස, අපට 1000 ප්රමාණයේ අරාවක් තිබේ නම්, ඇල්ගොරිතමයට 1,000,000 සැසඳීම් සහ හුවමාරු කිරීම් අරාව වර්ග කිරීමට අවශ්ය වේ.
හොඳම අවස්ථාව සංකීර්ණ O(n):
කාල සංකීර්ණත්වය ආදාන අරාවේ ප්රමාණයට සමාන වේ. මම
n අයිතම ලැයිස්තුවක් වර්ග කිරීමට t n සැසඳීම් සහ හුවමාරු කිරීම් සිදු කරයි. උදාහරණයක් ලෙස, 5 ප්රමාණයේ අරාවක් සලකා බලන්න. අරාව වර්ග කිරීමට ඇල්ගොරිතමයට සංසන්දනය සහ හුවමාරු කිරීම් පහක් ගත වේ.
සාමාන්ය සිද්ධි සංකීර්ණතාව O(n2):
කාල සංකීර්ණත්වය මෙම නඩුවේ නරකම හා හොඳම සංකීර්ණතා අතර වේ.
එය n ගනී2 n අයිතම ලැයිස්තුවක් වර්ග කිරීමට සැසඳීම් සහ හුවමාරු කිරීම්.
මේ අනුව, ඇතුළත් කිරීම් වර්ග කිරීම ස්ථායී වර්ග කිරීමේ ඇල්ගොරිතමයකි.
ඇතුළත් කිරීම් වර්ග කිරීම ස්ථායී වන්නේ ඇයි?
ආදාන අරාවෙහි සමාන මූලද්රව්ය අනුපිළිවෙල ආරක්ෂා කරන බැවින් ඇතුළත් කිරීමේ අනුපිළිවෙල ස්ථායී වේ.
දත්ත ලබා ගැනීම හෝ මූල්ය විශ්ලේෂණය වැනි බොහෝ යෙදුම් සඳහා මෙය වැදගත් වේ. උදාහරණයක් ලෙස, අපට සංඛ්යා ලැයිස්තු දෙකක් තිබේ නම් සහ ඒවා සංසන්දනය කිරීමට අවශ්ය නම්, මූලද්රව්යවල අනුපිළිවෙල සංරක්ෂණය කර ඇති බවට අපි සහතික විය යුතුය.
ලැයිස්තු වර්ග කර නොමැති නම්, අපි ඒවා නිවැරදිව සංසන්දනය නොකරමු.
ඔබමයි