次のようにコードをコピーします。
//直接挿入ソート
void DirectInsertionSort(int* arr, int nLen)
{
int i, j;
for (i=1; i<nLen; i++)
{
int temp = arr[i];
for (j=i-1; j>=0; j--)
{
if (temp < arr[j])
arr[j+1] = arr[j];
それ以外
壊す;
}
if (j+1 != i)
arr[j+1] = temp; //これは j+1 であることに注意してください。
}
}
//半分でソートを挿入
void BinaryInsertionSort(int* arr, int nLen)
{
int i, j;
int 低、中、高。
for (i=1; i<nLen; i++)
{
int temp = arr[i];
if (temp < arr[i-1])//この判定は不要です
{
低 = 0;
高 = i-1;
while (low <= high) //エラー: while( low < high) ここでは等号が必要であることに注意してください
{
中 = (低+高)/2;
if (temp < arr[mid])
高 = 中 - 1;
それ以外
低 = 中 + 1;
}
//上記の途中検索で挿入位置を検索した結果、挿入位置は low または high+1 となり、low は high+1 となります。
//for (j=i-1; j>=high+1; j--)
//{
// arr[j+1] = arr[j];
//}
//arr[high+1] = 温度;
for (j=i-1; j>=low; j--)
{
arr[j+1] = arr[j];
}
arr[低] = 温度;
}
}
}