다음과 같이 코드 코드를 복사합니다 .
//직접 삽입 정렬
void DirectInsertionSort(int* arr, int nLen)
{
int i, j;
(i=1; i<nLen; i++)
{
int 온도 = arr[i];
(j=i-1; j>=0; j--)에 대해
{
if (온도 < 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 낮음, 중간, 높음;
(i=1; i<nLen; i++)
{
int 온도 = arr[i];
if (temp < arr[i-1])//이 판단은 필요하지 않습니다.
{
낮음 = 0;
높음 = i-1;
while (low <= high) //오류: while( low < high) 여기에는 등호가 필요합니다.
{
중간 = (낮음+높음)/2;
if (온도 < 도착[중간])
높음 = 중간 - 1;
또 다른
낮음 = 중간 + 1;
}
//위 반탐색을 통해 삽입 위치를 탐색한 후, 삽입 위치는 low 또는 high+1이고 low는 high+1과 같습니다.
//(j=i-1; j>=높은+1; j--)
//{
// arr[j+1] = arr[j];
//}
//arr[high+1] = 온도;
(j=i-1; j>=낮음; j--)
{
arr[j+1] = arr[j];
}
arr[낮음] = 온도;
}
}
}