केवल integer
का उपयोग करने के बारे में क्या? कॉलम जो आदेश को परिभाषित करता है? डिफ़ॉल्ट रूप से आप संख्या * 1000 निर्दिष्ट करते हैं, जैसे 1000, 2000, 3000.... और यदि आप 1000 और 2000 के बीच 3000 को स्थानांतरित करते हैं तो आप इसे 1500 में बदल देते हैं। इसलिए ज्यादातर मामलों में आपको अन्य नंबरों को बिल्कुल भी अपडेट करने की आवश्यकता नहीं होती है। मैं इस दृष्टिकोण का उपयोग करता हूं और यह अच्छी तरह से काम करता है। आप double
. का भी उपयोग कर सकते हैं लेकिन फिर आपके पास सटीक और गोलाई त्रुटियों के बारे में नियंत्रण नहीं है, इसलिए इसका उपयोग न करें।
तो एल्गोरिथम ऐसा दिखेगा :मान लें कि आप B को A के बाद स्थिति में ले जाते हैं। A के बगल में रिकॉर्ड का क्रम देखने के लिए पहले प्रदर्शन करें। यदि यह A के क्रम से कम से कम +2 अधिक है तो आप बीच में फ़िट होने के लिए B का क्रम सेट करें। लेकिन अगर यह सिर्फ +1 अधिक है (ए के बाद कोई जगह नहीं है), तो आप बी के सीमावर्ती रिकॉर्ड का चयन करते हैं यह देखने के लिए कि इस तरफ कितनी जगह है, 2 से विभाजित करें और फिर इस मान को ए के बीच सभी रिकॉर्ड्स के क्रम में जोड़ें और बी. बस!
(ध्यान दें कि आपको किसी भी एल्गोरिदम के लिए लेनदेन/लॉकिंग का उपयोग करना चाहिए जिसमें एक से अधिक प्रश्न हों, इसलिए यह इस मामले पर भी लागू होता है। सबसे आसान तरीका InnoDB लेनदेन का उपयोग करना है।)