Kopieren Sie den Codecode wie folgt:
//Direkte Einfügungssortierung
void DirectInsertionSort(int* arr, int nLen)
{
int i, j;
für (i=1; i<nLen; i++)
{
int temp = arr[i];
für (j=i-1; j>=0; j--)
{
if (temp < arr[j])
arr[j+1] = arr[j];
anders
brechen;
}
if (j+1 != i)
arr[j+1] = temp; //Beachten Sie, dass dies j+1 ist
}
}
//Einfügung halbiert sortieren
void BinaryInsertionSort(int* arr, int nLen)
{
int i, j;
int niedrig, mittel, hoch;
für (i=1; i<nLen; i++)
{
int temp = arr[i];
if (temp < arr[i-1])//Dieses Urteil ist nicht notwendig
{
niedrig = 0;
hoch = i-1;
while (low <= high) //error: while( low < high) Beachten Sie, dass hier ein Gleichheitszeichen erforderlich ist
{
mittel = (tief+hoch)/2;
if (temp < arr[mid])
hoch = mittel - 1;
anders
niedrig = mittel + 1;
}
// Nach der Suche nach der Einfügeposition durch die obige Halbwegsuche ist die Einfügeposition niedrig oder hoch + 1, und niedrig ist gleich hoch + 1.
//for (j=i-1; j>=high+1; j--)
//{
// arr[j+1] = arr[j];
//}
//arr[high+1] = temp;
für (j=i-1; j>=niedrig; j--)
{
arr[j+1] = arr[j];
}
arr[low] = temp;
}
}
}