수에 대한 정렬을 해야 하는데 아는 것은 없고,찾다보니 버블정렬로

구현하는 방법이 있었네요..

정렬은 데이터 처리에 기본이죠..


데이터 처리의 기본은 정렬과 찾기 입니다..


정렬(Soring) 이란?

데이터를 순서대로 나열하는 것


100, 99, 98, , , , , , , 2, 1        ▶ 내림차순


1,2,3, , , , , , , , , , , , ,99, 100   ▶ 오름차순



따져봅시다..  5개 숫자를 오름 차순으로 정렬하는데

규칙이 있습니다. 좌측이 크면 배열을 바꾸는 겁니다.

종이에 칸을 만들고 적어보면 이해가 됩니다.




4회전을 하여 오름차순 정렬을 마쳤습니다. 잘 보면 규칙이 보입니다.

숫자가 5개인데 회전은 4번 했습니다. N - 1 번 움직임을 알 수 있습니다.


배열 개수를 아무거나 두고 하면 이렇게 나옵니다.
회전 밑에 보면 배열 번호를 붙였습니다. 이것은 배열위치를 바꾼 번호입니다.

코드상으로 버블 정렬을 해봅시다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

//bubble_sort.c
#include
 <stdio.h>
 
int main()
{
  int a[] = {25,65,45,35,55};
 
  int i , j , tmp, n;
 
  n = sizeof(a) / sizeof(int);
  
  puts("------------------");
  puts("**** 정수 정렬 ****");
  puts("------------------");
 
  //원본출력
  puts("**** 원 본 출 력 ****");
  for(i = 0; i < n ; i++)
     printf(" a[%d] = %d\n", i, a[i]);
 
  //거품정렬(Bubble sort)
  for( i = 0; i < n - 1; i++)
  {
    for(j = 0; j < n - 1 -i; j++)
   {
  if(a[j] > a[j+1])
{
  tmp = a[j];
      a[j] = a[j+1]; 
      a[j +1= tmp;
}
    }

}
 
    puts("\n **정렬 후 출력**");    
    for (i = 0; i < n; i++)        
       printf(" a[%d] = %d \n", i, a[i]);    
 
   puts(" ---------------");

  } 
 
}


 cs






저작자 표시
신고

'Study > C lang' 카테고리의 다른 글

코드 최적화 하기  (0) 2016.09.17
포인터와 메모리 핵심정리  (1) 2016.08.31
버블정렬 [Bubble Sort]  (2) 2016.08.09

WRITTEN BY
Profile
비타오백
Enjoy your stage!

받은 트랙백이 없고 , 댓글  2개가 달렸습니다.
  1. for문 코드 잘 못됐네요. 결과가 제대로 안 나옵니다.

    for( i = 0; i < n - 1; i++) 문의 대괄호 닫는 위치를 조정해야 할 것 같습니다.
secret