الفكرة الأساسية لخوارزمية فرز Hill هي: أولاً، خذ عددًا صحيحًا d1 أقل من n كزيادة أولى، وقسم جميع السجلات في الملف إلى مجموعات d1. يتم وضع كافة السجلات التي تكون المسافة بينها مضاعفات dl في نفس المجموعة. قم أولاً بإجراء فرز الإدراج المباشر داخل كل مجموعة، ثم خذ الزيادة الثانية d2<d1 وكرر التجميع والفرز أعلاه حتى الزيادة dt=1(dt<dt-l<…<d2<d1 )، أي حتى الكل يتم وضع السجلات في نفس المجموعة لفرز الإدراج المباشر. هذه الطريقة هي في الأساس طريقة إدراج مجمعة.
// فرز الإدراج مع الزيادة public static void shellSort(int[] array) { int len = array.length; int h = 1; while (h < len) h = h * 3 + 1; 1) { for (int i = 1; i < len; i++) { for (int j = i; j >= h; j = j - h) { if (array[j] < array[j - h]) { Sort.swap(array, j, j - h);// مبادلة j و jh } elsebreak;
رسم تخطيطي لفرز التل
ما ورد أعلاه هو المحتوى الكامل لهذه المقالة، وآمل أن يكون من المفيد للجميع إتقان فرز Java Hill.