Copy kode kodenya sebagai berikut:
//Pengurutan penyisipan langsung
membatalkan DirectInsertionSort(int* arr, int nLen)
{
ke dalam aku, j;
untuk (i=1; i<nLen; i++)
{
int suhu = arr[i];
untuk (j=i-1; j>=0; j--)
{
jika (suhu <arr[j])
arr[j+1] = arr[j];
kalau tidak
merusak;
}
jika (j+1 != saya)
arr[j+1] = temp; //Perhatikan bahwa ini adalah j+1
}
}
//Penyisipan diurutkan setengahnya
batal BinaryInsertionSort(int* arr, int nLen)
{
ke dalam aku, j;
int rendah, sedang, tinggi;
untuk (i=1; i<nLen; i++)
{
int suhu = arr[i];
if (temp < arr[i-1])//Penilaian ini tidak diperlukan
{
rendah = 0;
tinggi = i-1;
while (low <= high) //error: while( low < high) Perhatikan bahwa tanda sama dengan diperlukan di sini
{
pertengahan = (rendah+tinggi)/2;
jika (suhu < arr[pertengahan])
tinggi = sedang - 1;
kalau tidak
rendah = sedang + 1;
}
//Setelah mencari posisi penyisipan melalui pencarian setengah jalan di atas, posisi penyisipan adalah rendah atau tinggi+1, dan rendah sama dengan tinggi+1.
//untuk (j=i-1; j>=tinggi+1; j--)
//{
// arr[j+1] = arr[j];
//}
//arr[tinggi+1] = suhu;
untuk (j=i-1; j>=rendah; j--)
{
arr[j+1] = arr[j];
}
arr[rendah] = suhu;
}
}
}