'삽입정렬'에 해당되는 글 2건

  1. 2011.05.28 insertion sort - c
  2. 2011.05.26 insertion sort - Java
Computer Science/Algorithm2011. 5. 28. 21:09
삽입정렬을 c로 구현해봤다. 이진탐색을 구현하면서 포인터에 익숙해진터라 좀 더 수월하게 작업했다.

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <time.h>

int* scaffolding(int);
void print_array(int *, int);
void insertionsort(int *, int);

int main() {
int *x, n, i;
printf("배열 크기 : ");
scanf("%d", &n);
x = scaffolding(n);
printf("입력 : ");
print_array(x, n);

insertionsort(x, n);
printf("결과 : ");
print_array(x, n);

return 0;
}

void insertionsort(int *x, int n) {
int i, j;
for(i = 1; i < n; ++i){
for(j = i; j > 0 && x[j-1] > x[j]; --j){
int temp = x[j-1];
x[j-1] = x[j];
x[j] = temp;
}
}
}

void print_array(int *x, int n) {
int i;
for(i = 0; i < n; ++i)
printf("%d ", x[i]);
printf("\n");
}

int* scaffolding(int n) {
srand((unsigned) time(NULL));
int *x, i;

x = (int *)malloc(n * sizeof(int));
for(i = 0; i < n; ++i)
x[i] = rand() % n;

return x;
}


위의 삽입정렬에서 배열의 값을 swap 해주는 부분만 알고리즘을 바꿔봤다.
메모리에 쓰는 작업을 덜하기 때문에 좀 더 효율적이다.

void insertionsort(int *x, int n) {
int i, j, temp;
for(i = 1; i < n; ++i){
temp = x[i];
for(j = i; j > 0 && x[j-1] > temp; --j)
x[j] = x[j-1];
x[j] = temp;
}
}





'Computer Science > Algorithm' 카테고리의 다른 글

quick sort - Java  (0) 2011.05.30
quick sort - c  (0) 2011.05.30
insertion sort - Java  (0) 2011.05.26
binary search - Java  (0) 2011.05.17
binary search - c  (0) 2011.05.16
Posted by 준피
Computer Science/Algorithm2011. 5. 26. 23:03
삽입 정렬을 자바로 작성해봤다.

@Test
public void insertionSort() 
{
int[] x = new int[10];
for (int i = 0; i < x.length; i++)
x[i] = (int) (Math.random() * x.length);
for(int i = 1; i < x.length; ++i){
for(int j = i; j > 0; --j){
if(x[j] < x[j-1]){
int temp = x[j-1];
x[j-1] = x[j];
x[j] = temp;
}
}
}
}


이번 삽입 정렬은 swap을 하지 않는 방식으로 해봤다.

@Test
public void insertionSort2() 
{
int[] x = new int[10];
for (int i = 0; i < x.length; i++)
x[i] = (int) (Math.random() * x.length);
int i, j, temp;
for(i = 1; i < x.length; ++i){
temp = x[i];
for(j = i; j > 0 && x[j-1] > temp; --j)
x[j] = x[j-1];
x[j] = temp;
}
}



'Computer Science > Algorithm' 카테고리의 다른 글

quick sort - c  (0) 2011.05.30
insertion sort - c  (0) 2011.05.28
binary search - Java  (0) 2011.05.17
binary search - c  (0) 2011.05.16
반전 알고리즘  (0) 2011.05.12
Posted by 준피