2017. 3. 27. 11:17ㆍC Algorithm
1. 삽입정렬 ( InsertSort )
원리 : 선택한 요소가 들어갈 있는 자리를 찾아서 삽입시킨다.
< 소스코드 >
#include<stdio.h>
void insert_sort ( int arr[] , int end ) {
int i = 0 , j = 0 , temp = 0 ;
for( int i = 0 ; i <= end ; i++){
temp = arr [ i ] ;
j = i ;
while( arr[ j-1 ] > temp && j > 0 ){
arr [ j ] = arr [ j-1 ];
j--;
}
arr [ j ] = temp ;
}
}
int main ( void ){
int arr[] = { 5 , 4 , 2 , 3 , 1 };
int i = 0 ;
insert_sort( arr , 4 );
for ( i = 0 ; i < 5 ; i++){
printf("%d " , arr[i] );
}
}
< 과정 >
i , j = 0 : 5 4 2 3 1
i , j = 1 : 5 5 2 3 1 -> 4 5 2 3 1
i , j = 2 : -> 4 5 5 3 1 -> 4 4 5 3 1 -> 2 4 5 3 1
i , j = 3 : -> 2 4 5 5 1 -> 2 4 4 5 1 -> 2 3 4 5 1
i , j = 4 : -> 2 3 4 5 5 -> 2 3 4 4 5 -> 2 3 3 4 5 -> 2 2 3 4 5 -> 1 2 3 4 5 .
---------
2. 버블정렬 ( BubbleSort )
원리 : 요소두개를 계속 비교해서 뒤로 값을 보낸다.
<소스코드>
#include<stdio.h>
void bubble_sort( int arr[] , int end ){
int i = 0 , j = 0 , temp = 0 ;
for( i = end ; i > 0 ; i--){
for( j = 1 ; j <= i ; j++){ // 맨끝에 값은 비교할 필요가 없다
if( arr [ j -1 ] > arr [ j ] ){
temp = arr [ j ] ;
arr [ j ] = arr [ j-1 ] ;
arr [ j-1 ] = temp ;
}
}
}
}
int main( void ) {
int arr[] = { 5 , 2 , 3 , 1 , 4 };
int i = 0 ;
bubble_sort( arr , 4 );
for ( i = 0 ; i < 4 ; i++){
printf("%d " , arr[i] ) ;
}
return 0 ;
}
< 과정 >
i = 4 : 2 5 3 1 4 -> 2 3 5 1 4 -> 2 3 1 5 4 -> 2 3 1 4 5
i = 3 : 2 3 1 4 5 -> 2 1 3 4 5
i = 2 : 1 2 3 4 5
'C Algorithm' 카테고리의 다른 글
스택 ( Stack push함수 , Stack pop함수 ) (0) | 2017.04.06 |
---|---|
링크드리스트 ( Linked List ) (0) | 2017.04.05 |
Fibonacci & Dynamic Programming( 피보나치수열 & 동적계획법) (0) | 2017.03.25 |
BinarySearch ( 이진검색 ) (0) | 2017.03.25 |
MergeSort ( 병합정렬 ) (0) | 2017.03.24 |