1. وصف الخوارزمية
حدد الفرز: على سبيل المثال ، في مجموعة من الطول غير المرتبة N ، تجتاز بيانات N في الرحلة الأولى ، واكتشف أصغر قيمة وتبادلها مع العنصر الأول ، والرحلة الثانية تعبر بيانات N-1 المتبقية ، واكتشاف أصغر قيمة وتبادلها مع العنصر الثاني ، وتجتاز N-1st للبيانات المتبقية ، واكتشف القيمة الأصغر وتبادلها مع العنصر N-1 ، واختيار التصنيف.
يتم استخدام البيانات الخمسة التالية غير المرتبة كأمثلة:
56 12 80 91 20 (يتم تحسين عملية اختيار الرحلة الأولى فقط في المقالة)
الرحلة الأولى: 12 56 80 91 20
الرحلة الثانية: 12 20 80 91 56
الرحلة 3: 12 20 56 91 80
الرحلة الرابعة: 12 20 56 80 91
2. تحليل الخوارزمية
متوسط الوقت التعقيد: O (N2)
تعقيد الفضاء: O (1) (لفهارس التبادل والتسجيل)
الاستقرار: غير مستقر (على سبيل المثال ، يتم تبادل الأول [5] و [3] في الرحلة الأولى من التسلسل [5 ، 5 ، 3] ، مما تسبب في التحرك الخمس الأول خلف الـ 5 الثاني)
3. تنفيذ الخوارزمية
اختيارات الفئة العامة {public static void main (string [] args) {int len = 15 ؛ int [] ary = new int [len] ؛ عشوائي عشوائي = جديد عشوائي () ؛ لـ (int j = 0 ؛ j <len ؛ j ++) {ary [j] = random.nextint (1000) ؛ } system.out.println ("------------------") ؛ // ary = new int [] {10،9،8،7،6،5،4،3،2،1} ؛ // test testanges // ary = new int [] {1،2،3،4،5،6،7،8،10،9} ؛ // تبادل الاختبار لـ (int j = 0 ؛ j <ary.length ؛ j ++) {system.out.print (ary [j]+"") ؛ } selectDesc (ary) ؛ selecasasc (ary) ؛ }/ * * حدد الفرز: devcending */static void selectDesc (int [] ary) {int compareCount = 0 ؛ // قارن الأوقات int changeCount = 0 ؛ // عدد البورصات int len = ary.length ؛ int maxvalueindex = -1 ؛ // سجل أدنى فهرس القيمة بعد جولة من المقارنات (int i = 0 ؛ i <len - 1 ؛ i ++) {maxValueIndex = i ؛ // من 0 لـ (int j = i+1 ؛ j <len ؛ j ++) {if (ary [maxValueIndex] <ary [j]) {maxValueIndex = j ؛ // سجل أكبر فهرس المقارن ++ ؛ }} // system.out.println ("minvalueIndex ==" + maxValueIndex) ؛ if (maxValueIndex! = i) {// إذا كان الفهرس مختلفًا عن السجل الموجود على اليسار ، فقم بتبادل ary [i] = ary [maxValueIndex]+(ary [maxvalueindex] = ary [i]) * 0 ؛ }} System.out.println ("/n ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ (int i = 0 ؛ i <len - 1 ؛ i ++) {minindex = i ؛ ary [minindex]+(ary [minindex] = ary [i]) * 0 ؛ System.out.println ("/n -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- لـ (int j = 0 ؛ j <ary.length ؛ j ++) {system.out.print (ary [j]+"") ؛ }}}مطبعة
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------