알고리즘 가이드 학습 1 - 삽입 정렬 (insertion sort)
4894 단어 필기
다음은 을 공부하는 과정에서 필기하고 정리한 것이다. 채소 새급은 정신을 가다듬지 마라.
내림차순이 아닌 정렬 1
다음 코드는 책의 위조 코드에 따라 편집된 원본으로 이 방식은 비강하 순서로 정렬된다.
void insertionSort_1(int *a, int length)
{
for(int j=1; j=0 && a[i] > key)
{
a[i+1] = a[i];
i--;
}
a[i+1] = key;
}
}
내림차순이 아닌 정렬 2
다음 코드는 배열 끝에서 순서를 재정의하는 비내림차순 정렬입니다.
void inserttionSort_2(int *a, int length)
{
for(int j=length-2; j>=0; j--)
{
int key = a[j];
int i = j + 1;
while(i<=length-1 && a[i] < key)
{
a[i-1] = a[i];
i++;
}
a[i-1] = key;
}
}
오름차순 정렬 없음 1
다음 코드가 고쳐진 비승차순 정렬입니다.
void insertionSort_3(int *a, int length)
{
for(int j=1; j<length; j++)
{
int key = a[j];
int i = j - 1;
while(i>=0 && a[i] < key)
{
a[i+1] = a[i];
i--;
}
a[i+1] = key;
}
}
오름차순 정렬 없음 2
다음 코드는 수조의 끝에서부터 고쳐진 비승차순 정렬입니다.
void insertionSort_4(int *a, int length)
{
for(int j=length-2; j>=0; j--)
{
int key = a[j];
int i = j + 1;
while(i<= length-1 && a[i] > key)
{
a[i -1] = a[i];
i++;
}
a[i-1] = key;
}
}
이분법 추가
void insertionSort_5(int *a, int length)
{
for(int j=1; j<=length-1; j++)
{
int key = a[j];
int m = (j-1)/2;
if(a[m] > key)
{
for(int t=j-1; t>=m; t--)
{
a[t+1] = a[t];
}
int i = m -1;
while( i>=0 && a[i] > key)
{
a[i+1] = a[i];
i--;
}
a[i+1] = key;
}
else
{
int i = j - 1;
while(i>m && a[i] > key)
{
a[i+1] = a[i];
i--;
}
a[i+1] = key;
}
}
}
총결산
첫 번째는 책에서 위조 코드를 번역한 원본 코드이고, 다른 세 가지는 이를 바탕으로 개작한 코드이다.같은 것은 사상이다. 다른 것은 조작의 시작점과 순서의 규칙이 다르다는 것이다.이 몇 가지는 형식적으로 for순환은 수조에서 원소를 옮겨다니는 작업을 완성하고while순환은 판정된 원소의 삽입 위치를 찾아 원소를 이동하는 두 가지 작업을 완성한다.그룹 헤더에서 시작하는 방법은 for 순환에서 j의 계수가 작은 것에서 큰 것으로 대응하는 것이다.그룹 끝에서 시작하는 방법, for 순환에서 j의 계수는 크고 작습니다.그 중에서 a[j]는 삽입된 원소를 추출하고 i의 시작값은 j에 의존하며 수조에서 j와 인접한 정렬된 방향에 있는 원소의 하표이다.while 순환 중 요소와 키를 비교한 후 이동 방향도 시작단에서 멀리 떨어진 방향입니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
static 간단한 설명static 방법은 일반적으로 정적 방법이라고 부른다. 정적 방법은 어떠한 대상에 의존하지 않고 접근할 수 있기 때문에 정적 방법에 있어this는 없다. 왜냐하면 그 어떠한 대상에도 의존하지 않기 때문이다. 대상이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.