선택정렬응용
#include <iostream>
#include <iomanip> // 전처리기 setw() 필드 폭 설정
using namespace std;
void sel(int *a , int b); //선택정렬
void print(int *a , int b); //출력
int main()
{
int size;
cout << "몇 개를 입력 할까요??"<< endl; // 사이즈 입력
cin >> size;
int *A= new int[size]; // 사이즈 만큼 메모리 할당
cout << setw(6)<<"임의로 받은 수" <<endl;
for(int x=0; x<size; x++)
{
A[x]=rand()%100; // 1~100사이의 임의의 수를 넣는다.
cout <<setw(6)<< A[x];
}
cout <<endl;
int len= size; // 임의의 배열 크기 측정
sel(A , len); // 선택 정렬 <배열앞에 &을 붙이지 않아도 됨.>
// <왜냐하면 배열의 이름은 첫번째 주소의 주소값을 나타내기 때문임.>
print(A , len); //출력 <배열 전달 시 포인터 나 배열로 받아야함!!>
delete [] A; // 메모리 해제
}
void sel(int *a , int b)
{
for(int i =1; i <=b-1; i++)
{
int hold = a[i];
int walker = i-1;
while(walker >= 0 && hold< a[walker])
{
a[walker+1]=a[walker];
walker=walker-1;
cout << endl;
}
a[walker +1] = hold;
cout << endl;
for(int k=0; k<b; k++)
{
if(hold==a[k])
{
cout << setw(6)<< "<" ;
}
else if(hold== a[k]) //변화 단계 출력
{
cout << setw(6)<< "[";
}
cout << setw(6)<< a[k];
if(hold== a[k])
cout << setw(6) <<">";
else if(hold == a[k])
{
cout << setw(6)<<"]";
}
}
}
}
void print(int *a, int b)
{
cout << endl;
cout << "정렬완료"<< endl;
for(int i=0; i<b; i++) // 배열의 크기만큼 루프를 돌려 a[i]출력.
{
cout<< setw(6)<<a[i]; // 6만큼 필드 폭을 설정하여 a[i]출력.
}
cout << endl;
}
'1. IT Story > Development' 카테고리의 다른 글
윈도우폰 게임개발 기초(WindowPhoneGame) (0) | 2012.03.07 |
---|---|
C# 채팅 프로그램(Client 확장) (0) | 2012.03.07 |
C# 채팅 프로그램(Server 확장) (4) | 2012.03.07 |
C# 채팅 프로그램(Client) (0) | 2012.03.07 |
이름정렬 (0) | 2012.03.07 |
링크드리스트를 이용한 학생관리Pro (0) | 2012.03.07 |
링크드리스트(Linked list) (0) | 2012.03.07 |
이진탐색+Recrusion (되부름 알고리즘) (0) | 2012.03.07 |