KEMBAR78
Insert Sort Algorithm (삽입 정렬 알고리즘) | PPTX
Insert Sort Algorithm
삽입 정렬 알고리즘
삽입 정렬 알고리즘이란
두번째 데이터부터 시작하여 그 이전 데이터들과 비교해서
이전 데이터 값이 더 크면 서로 자리를 바꾸며 정렬하는 알고리
즘이다.
100 68 25 1 15 72
Buf[0] Buf[1] Buf[2] Buf[97] Buf[98] Buf[99]
두번째
삽입 정렬 알고리즘이란
두번째 데이터부터 시작하여 그 이전 데이터들과 비교해서
이전 데이터 값이 더 크면 서로 자리를 바꾸며 정렬하는 알고리
즘이다.
100 68 25 1 15 72
Buf[0] Buf[1] Buf[2] Buf[97] Buf[98] Buf[99]
12
삽입 정렬 알고리즘이란
두번째 데이터부터 시작하여 그 이전 데이터들과 비교해서
이전 데이터 값이 더 크면 서로 자리를 바꾸며 정렬하는 알고리
즘이다.
100 68 25 1 15 72
Buf[0] Buf[1] Buf[2] Buf[97] Buf[98] Buf[99]
123
삽입 정렬 알고리즘의 시간복잡도는 O(𝑁2
) 이다.
선택 정렬 알고리즘과 같으므로 두 알고리즘 간 성능 차이는 거의 없
다.
하지만 삽입 정렬 알고리즘은 비교 횟수가 적고 이동 횟수가 많기 때
문에 최선의 경우(데이터가 어느정도 정렬된 경우)엔 선택 정렬보
다 빠르지만 최악의 경우(데이터가 전혀 정렬되지 않은 경우)엔
더 느리다.
주요 함수
void InsertionSort(void)
void InsertionSort(void)
void InsertionSort(void)
{
int i, j, dummy;
for(i=1;i<MAX;i++){
dummy = Buf[i];
j = i;
while(Buf[j-1] > dummy && j > 0){
Buf[j] = Buf[j-1];
j--;
}
Buf[j] = dummy;
}
}
Buf의 값을 삽입정렬한다.
void InsertionSort(void)
void InsertionSort(void)
{
int i, j, dummy;
for(i=1;i<MAX;i++){
dummy = Buf[i];
j = i;
while(Buf[j-1] > dummy && j > 0){
Buf[j] = Buf[j-1];
j--;
}
Buf[j] = dummy;
}
}
인덱스 값 1부터
즉 두번째 값부터 정렬시작
void InsertionSort(void)
void InsertionSort(void)
{
int i, j, dummy;
for(i=1;i<MAX;i++){
dummy = Buf[i];
j = i;
while(Buf[j-1] > dummy && j > 0){
Buf[j] = Buf[j-1];
j--;
}
Buf[j] = dummy;
}
}
Buf[j-1]이 dummy보다 더 크면
100 68 25 1 15 72
Buf[0] Buf[1] Buf[2] Buf[97] Buf[98] Buf[99]
68
dummy
Buf[j-1]
1
j
void InsertionSort(void)
void InsertionSort(void)
{
int i, j, dummy;
for(i=1;i<MAX;i++){
dummy = Buf[i];
j = i;
while(Buf[j-1] > dummy && j > 0){
Buf[j] = Buf[j-1];
j--;
}
Buf[j] = dummy;
}
}
Buf[j-1]을 Buf[j]에 대입후
J--
100 100 25 1 15 72
Buf[0] Buf[1] Buf[2] Buf[97] Buf[98] Buf[99]
68
dummy
0
j
void InsertionSort(void)
void InsertionSort(void)
{
int i, j, dummy;
for(i=1;i<MAX;i++){
dummy = Buf[i];
j = i;
while(Buf[j-1] > dummy && j > 0){
Buf[j] = Buf[j-1];
j--;
}
Buf[j] = dummy;
}
}
Buf[j]에 dummy값을 대입
68 100 25 1 15 72
Buf[0] Buf[1] Buf[2] Buf[97] Buf[98] Buf[99]
68
dummy
0
j
- 끝 -

Insert Sort Algorithm (삽입 정렬 알고리즘)

  • 1.
    Insert Sort Algorithm 삽입정렬 알고리즘
  • 2.
    삽입 정렬 알고리즘이란 두번째데이터부터 시작하여 그 이전 데이터들과 비교해서 이전 데이터 값이 더 크면 서로 자리를 바꾸며 정렬하는 알고리 즘이다. 100 68 25 1 15 72 Buf[0] Buf[1] Buf[2] Buf[97] Buf[98] Buf[99] 두번째
  • 3.
    삽입 정렬 알고리즘이란 두번째데이터부터 시작하여 그 이전 데이터들과 비교해서 이전 데이터 값이 더 크면 서로 자리를 바꾸며 정렬하는 알고리 즘이다. 100 68 25 1 15 72 Buf[0] Buf[1] Buf[2] Buf[97] Buf[98] Buf[99] 12
  • 4.
    삽입 정렬 알고리즘이란 두번째데이터부터 시작하여 그 이전 데이터들과 비교해서 이전 데이터 값이 더 크면 서로 자리를 바꾸며 정렬하는 알고리 즘이다. 100 68 25 1 15 72 Buf[0] Buf[1] Buf[2] Buf[97] Buf[98] Buf[99] 123
  • 5.
    삽입 정렬 알고리즘의시간복잡도는 O(𝑁2 ) 이다. 선택 정렬 알고리즘과 같으므로 두 알고리즘 간 성능 차이는 거의 없 다. 하지만 삽입 정렬 알고리즘은 비교 횟수가 적고 이동 횟수가 많기 때 문에 최선의 경우(데이터가 어느정도 정렬된 경우)엔 선택 정렬보 다 빠르지만 최악의 경우(데이터가 전혀 정렬되지 않은 경우)엔 더 느리다.
  • 6.
  • 7.
    void InsertionSort(void) void InsertionSort(void) { inti, j, dummy; for(i=1;i<MAX;i++){ dummy = Buf[i]; j = i; while(Buf[j-1] > dummy && j > 0){ Buf[j] = Buf[j-1]; j--; } Buf[j] = dummy; } } Buf의 값을 삽입정렬한다.
  • 8.
    void InsertionSort(void) void InsertionSort(void) { inti, j, dummy; for(i=1;i<MAX;i++){ dummy = Buf[i]; j = i; while(Buf[j-1] > dummy && j > 0){ Buf[j] = Buf[j-1]; j--; } Buf[j] = dummy; } } 인덱스 값 1부터 즉 두번째 값부터 정렬시작
  • 9.
    void InsertionSort(void) void InsertionSort(void) { inti, j, dummy; for(i=1;i<MAX;i++){ dummy = Buf[i]; j = i; while(Buf[j-1] > dummy && j > 0){ Buf[j] = Buf[j-1]; j--; } Buf[j] = dummy; } } Buf[j-1]이 dummy보다 더 크면 100 68 25 1 15 72 Buf[0] Buf[1] Buf[2] Buf[97] Buf[98] Buf[99] 68 dummy Buf[j-1] 1 j
  • 10.
    void InsertionSort(void) void InsertionSort(void) { inti, j, dummy; for(i=1;i<MAX;i++){ dummy = Buf[i]; j = i; while(Buf[j-1] > dummy && j > 0){ Buf[j] = Buf[j-1]; j--; } Buf[j] = dummy; } } Buf[j-1]을 Buf[j]에 대입후 J-- 100 100 25 1 15 72 Buf[0] Buf[1] Buf[2] Buf[97] Buf[98] Buf[99] 68 dummy 0 j
  • 11.
    void InsertionSort(void) void InsertionSort(void) { inti, j, dummy; for(i=1;i<MAX;i++){ dummy = Buf[i]; j = i; while(Buf[j-1] > dummy && j > 0){ Buf[j] = Buf[j-1]; j--; } Buf[j] = dummy; } } Buf[j]에 dummy값을 대입 68 100 25 1 15 72 Buf[0] Buf[1] Buf[2] Buf[97] Buf[98] Buf[99] 68 dummy 0 j
  • 12.