Dailelog

selection sort 본문

언어/C언어

selection sort

Daile 2022. 4. 13. 15:10

 

#include 

void printArray(int a[], int n)
{
     int i;

     for (i = 0; i < n; i++)
     {
            printf("%d ", a[i]);
      }
      printf("\n");
}
int getMaxPos(int p[], int n)
{
        int max;
        int maxPos;
        int i;

        max = -1;
        maxPos = -1;

        for (i = 0; i < n; i++)
        {
              if (p[i] > max)
              {
                   max = p[i];
                   maxPos = i;
               }
         }
        return maxPos;
}
void swap(int* a, int* b)
{
         int tmp;

          tmp = *a;
          *a = *b;
           *b = tmp;
}
void selectionSort(int p[], int n)
{
       int i;
       int maxPos;

       for (i = 0; i < 9; i++)
       {
            maxPos = getMaxPos(p, n -i);
            swap(&p[maxPos], &p[n - 1 - i]);
         }//sorting이라고 함 
          //phase 단계(변해가는 과정을 한 단계를 phase라고 함)
}

main()
{
       int x[10] = {38,54,67,45,89,12,29,17,82,11 };

       printf("=========before sort=========\n");
      printArray(x, 10);

       selectionSort(x, 10);

       printf("=========before sort=========\n");
        printArray(x, 10);
/*max = -1; // 제일 작은수 양수만 있다고 가정
maxPos = -1;

for (i = 0; i < 10; i++)
{
if (x[i] > max)
{
max = x[i];
maxPos = i;
}
}//
*/
//printf("max = %d, maxPos = %d\n",x[maxPos], maxPos);

}
 
 

select  sort 선택 정렬
앞 에서 배운 swap을 이용해 위치를 바꿔 정렬하는것을 sorting 이라고 한다. 
sorting에는 다양한 방법들이 존재한다. 그 중 bubble sort, selection sort, insertion sort 순서로 쉬다고 한다. 교수님께서 위에 3가지를 먼저 익히라고 하셨다.  위 세가지 sorting  방법을 꼭 익히기 2학년 까지 눈가리고도 짤수 있어야 한다고 하셨고 그렇게 할것이다. 그럼 열심히 해야할듯 하다.

다른 sorting 방법중 대표적으로 quick sort, merge sort,heap sort,shell sort 이 4가지가 자주 사용한다고 하셨고 모두 공부 해야한다. 열심히 하자 

반응형
LIST

'언어 > C언어' 카테고리의 다른 글

C_string_strcpy  (0) 2022.04.27
C_포인터 사용 목적  (1) 2022.04.26
C_string_strlen  (0) 2022.04.25
C_2차원 배열_ 함수 이용(2 Dimensional Array)  (0) 2022.04.22
C_포인터_swap  (0) 2022.04.12