Visual Studio/C++ 기초

C++ 문자열 정렬

낙락장송s 2013. 12. 6. 14:21

숫자를 오름차순으로 정렬하는 방법은 여러 가지 있지만, 가장 간단한 방법을 사용해보겠습니다.

sort() 라는 함수를 생성하고, 아래와 같은 알고리즘으로 작성합니다.

1. 이 함수는 n개의 정수 중에서 최솟값을 찾아 첫 번째 위치로 옮깁니다.

 

2. 이후 나머지 n-1개의 숫자 중에서 최솟값을 찾아 두 번째 위치로 옮기고, 이러한 과정을 가장 낮은 값이 나올 때 까지 반복합니다. 예제를 보겠습니다.

 #include <iostream>
using namespace std;

void sort(int arr[]);

void main(){
 int i;
 int array[] = {20, 9, 8, 2, 5, 66, 100, 22, 45, 65, 43, 31};

 cout << "정렬하기 이전 : ";
 for(i=0; i<12; i++)
  cout << array[i] << " ";

 sort(array);

 cout << "\n정렬 이후 : " ;
 for(i=0; i<12; i++)
  cout << array[i] << " ";
 cout << "\n";
}

void sort(int arr[])
{
 int i, j, temp;
 for(i=0; i<12-1; i++)
  for(j=i+1; j<12; j++)
   if(arr[i]>arr[j])
   {
    temp=arr[i];
    arr[i]=arr[j];
    arr[j]=temp;
   }
}

먼저 arr[i]값과 arr[i+1](arr[j])값을 대조 해서 arr[i]가 arr[i+1]보다 크다면 arr[i]의 값을 임시(temp) 변수에 저장합니다. 서로 위치를 변경해 주고 arr[i+1]값을 temp와 같게 해주는 것이죠. 이 과정을 반복합니다.