[[프로그래밍_NOTE]]/C , C++

버블 소트 [bubble sort]

갑빠돌격기 2007. 8. 26. 12:58

/**************************
버블소트를 이용한 숫자 정렬
***************************/

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

void print_menu()
{
 printf("1.. 성적 입력\n");
 printf("2.. 성적 출력\n");
 printf("3.. 성적 정렬\n");
 printf("4.. 평균 계산\n");
}

void MakeArray(int **pgrade , int grade_count)
{
 *pgrade = (int*)malloc(sizeof(int)*grade_count);
}
void insert_grade(int * grade ,int grade_count)
{
 for(int i=0 ; i<grade_count ; i++)
 {
  printf("%d번 :",i+1);
  scanf("%d",&grade[i]);fflush(stdin);
 }
}
void print_grade(int * grade ,int grade_count)
{
 for(int i=0 ; i<grade_count ; i++)
 {
  printf("%d\t" , grade[i]);
 }
 putchar('\n');
}
void bubble_sort_grade(int * grade ,int grade_count)
{
 // i는 정렬된 데이터의 갯수
 for(int i=0 ; i<grade_count ; i++)
  for(int j=grade_count-1 ; j>i ; j--)
   if(grade[j-1]>grade[j])
   {
    int temp = grade[j-1];
    grade[j-1] = grade[j];
    grade[j] = temp;
   }
}
void main()
{
 int  i_Choice;
 int  *grade;
 int  grade_count;

 printf("총 몇명의 성적 관리?");
 scanf("%d",&grade_count);fflush(stdin);
 
 MakeArray(&grade , grade_count);

 while(i_Choice)
 {
  print_menu();
  scanf("%d",&i_Choice);fflush(stdin);
  switch(i_Choice)
  {
  case 1:
   insert_grade(grade , grade_count);
   break;
  case 2:
   print_grade(grade , grade_count);
   break;
  case 3:
   bubble_sort_grade(grade , grade_count);
   break;
  }
 }
}