انسخ رمز الكود كما يلي:
// فرز الإدراج المباشر
باطلة DirectInsertionSort (int * arr، int nLen)
{
كثافة العمليات ط، ي؛
لـ (i=1;i<nLen;i++)
{
int temp = arr[i];
لـ (j=i-1; j>=0; j--)
{
إذا (درجة الحرارة < آر [ي])
arr[j+1] = arr[j];
آخر
استراحة؛
}
إذا (ي+1 != أنا)
arr[j+1] = temp; // لاحظ أن هذا هو j+1
}
}
// فرز الإدراج بمقدار النصف
باطلة BinaryInsertionSort (int * arr، int nLen)
{
كثافة العمليات ط، ي؛
كثافة العمليات منخفضة، متوسطة، عالية؛
لـ (i=1;i<nLen;i++)
{
int temp = arr[i];
if (temp < arr[i-1])// هذا الحكم ليس ضروريًا
{
منخفض = 0؛
عالية = ط-1؛
بينما (منخفض <= مرتفع) // خطأ: بينما (منخفض < مرتفع) لاحظ أن علامة المساواة مطلوبة هنا
{
منتصف = (منخفض + مرتفع)/2؛
إذا (درجة الحرارة <arr[منتصف])
عالية = منتصف - 1؛
آخر
منخفض = منتصف + 1؛
}
// بعد البحث عن موضع الإدراج من خلال البحث النصفي أعلاه، يكون موضع الإدراج منخفضًا أو مرتفعًا +1، ومنخفضًا يساوي مرتفعًا +1.
//لـ (j=i-1; j>=high+1; j--)
//{
// arr[j+1] = arr[j];
//
//arr[high+1] = temp;
لـ (j=i-1; j>=منخفض; j--)
{
arr[j+1] = arr[j];
}
arr[low] = temp;
}
}
}