يمكن تمثيل أي تسلسل بيانات من نفس النوع كقائمة. يمكن طلب القوائم وعدم ترتيبها. في الحالة الأخيرة ، يتسبب العمل مع البيانات وإيجاد القيمة المطلوبة والوصول إلى عناصر القائمة في بعض الصعوبات. عادة ما يتم فرز قائمة متغيرات السلسلة أبجديًا. هناك العديد من طرق الفرز ، وفي كل حالة يجب عليك اختيار أفضل الخوارزمية.
تعليمات
الخطوة 1
عند اختيار أفضل طريقة للفرز ، هناك شيئان يجب مراعاتهما: الوقت المستغرق لعملية الفرز ومقدار الذاكرة المطلوبة للتخزين الإضافي. يُشار إلى خوارزميات الفرز التي لا تتطلب ذاكرة إضافية بالفرز "في المكان". يعد الفرز البطيء للفقاعات أحد أسهل طرق التنفيذ ، حيث يقوم بمسح كل زوج من العناصر في القائمة ويتبادل الأماكن وفقًا للترتيب المطلوب.
الخطوة 2
توجد طريقة فرز أسرع من خلال إيجاد الحد الأدنى أو الأقصى للعنصر في القائمة. في حالة الفرز أبجديًا ، في كل مرة تمر بالقائمة ، تحتاج إلى العثور على أقصى عنصر لها - ستكون هذه سلسلة تبدأ بالحرف الأقرب إلى بداية الأبجدية. بمجرد العثور على السلسلة يتم تبديلها بالعنصر الأول في القائمة في المرور الأول. عند مزيد من النظر في القائمة ، يتم استبعاد المركز الأول ، والبحث عن العنصر الأقصى التالي ، ووضعه في المرتبة الثانية ، وما إلى ذلك. كود برنامج الفرز في C ++ بطريقة إيجاد الحد الأقصى لعنصر القائمة: String Arr [20]، cTemp؛ int N = 20، Max، Pos؛ for (int i = 0؛ i <N- 1؛ i ++) {Max = Arr ؛ Pos = أنا ؛ لـ (int j = 0؛ j <N؛ j ++) {if (Arr [j] <Max) {Max = Arr [j]؛ Pos = j ؛ } cTemp = Arr ، Arr = Arr [Pos] ؛ Arr [Pos] = cTemp ؛ }}
الخطوه 3
الحل الأمثل لطلب بيانات السلسلة في قائمة هو فرز الإدراج. يكمن جوهرها في حقيقة أنه مع كل تمريرة في القائمة ، يوجد جزء مرتب من قائمة عدد معين من العناصر ، وبالتالي ، يتم وضع العنصر التالي قيد النظر في مكان مناسب في القائمة. كود C ++ لخوارزمية فرز الإدراج: String Arr [20]، cTemp؛ int N = 20؛ لـ (int i = 1، j = 0؛ i <N؛ i ++) {cTemp = Arr ؛ ي = أنا - 1 ؛ while (cTemp <Arr [j]) {Arr [j + 1] = Arr [j] ؛ ي-- ؛ إذا (ي <0) كسر ؛ Arr [j + 1] = cTemp ؛ }}