본문 바로가기

C 언어/임베디드 C

버블 정렬

버블 정렬이란 인접해 있는 두 개의 값을 비교해서 자료 교환을 하는 것이다.
오름차순은 두 개의 값을 비교해서 큰 값을 오른쪽으로 보내는 방식이다.
내림차순은 두 개의 값을 비교해서 작은 값을 오른쪽으로 보내는 방식이다.

//버블 정렬 프로그램

#include
 <stdio.h>

void bubble_sort(int array[], int count);
void swap(int *px, int *py);
void printVector(int V[], int n);

int main()
{
  int vector[5= {54321};
  bubble_sort(vector, 5);
}

void bubble_sort(int array[], int count)
{
  int i, j;

  for(i=0; i<count-1 ; i++)
  {
    for(j=0; j<count-1-i; j++)
    {
      if(array[j]>array[j+1])
      {
        swap(&array[j], &array[j+1]);
        printVector(array, 5);
      }
    }
  printf("\n");
  }
}

void swap(int *px, int *py)
{
  int temp = *px;
  *px = *py;
  *py = temp;
}

void printVector(int V[], int n)
{
  int i;
  for(i=0; i<n; i++)
  {
    printf("%5d", V[i]);
  }
  printf("\n");
}




#include <stdio.h>

void bubble_sort(int array[], int count);
void swap(int *px, int *py);
void printVector(int V[], int n);

int main()
{
  int vector[5= {54321};
  printf("vector의 주소 %08X\n", vector);
  bubble_sort(vector, 5);
}

void bubble_sort(int array[], int count)
{
  int i, j;

  printf("array[0]의 주소 %08X\n", array);
  printf("&array[0]의 주소 %08X\n"&array);
  for(i=0; i<count-1 ; i++)
  {
    for(j=0; j<count-1-i; j++)
    {
      if(array[j]>array[j+1])
      {
        swap(&array[j], &array[j+1]);
        printVector(array, 5);
      }
    }
  printf("\n");
  }
}

void swap(int *px, int *py)
{
  int temp = *px;
  *px = *py;
  *py = temp;
}

void printVector(int V[], int n)
{
  int i;
  
  printf("V[0]의 주소 %08X\n", V);
  
  for(i=0; i<n; i++)
  {
    printf("%5d", V[i]);
  }
  printf("\n");
}

array[]는 배열처럼 보이지만 포인터다


'C 언어 > 임베디드 C' 카테고리의 다른 글

구조체의 초기화  (0) 2011.07.07
2차원 배열을 초기화하여, 화면에 출력  (0) 2011.07.01
리다이렉션(redirection)  (0) 2011.06.29
구조체를 사용한 파일 입출력  (0) 2011.06.29
malloc(), free()  (0) 2011.06.22