void selectionSort(int* a, int num);
//void quickSort(int* b, int num);
void printArray(int* arr, int num);
using namespace std;
int main()
{
int A[20]={12,18,81,54,32,78,2,37,55,21,7,1,88,10,33,44,66,77,19,20};
selectionSort(A,sizeof(A)/sizeof(int));//선택정렬
printArray(A, sizeof(A)/sizeof(int));
return 0;
}
void selectionSort(int* a, int num)//배열이름, 배열크기
{
int max=0;//최대값 저장하기 위한 변수
int temp;
for( ;num>0;num--)
{
for(int i=1; i<num; i++)//for문을 돌며 최대값을 검색
{
if(a[i]>a[max])
{
max=i;//최대값의 위치를 저장
}
}
temp=a[num-1];
a[num-1]=a[max];//최대값을 배열끝에 삽입
a[max]=temp;
}
}
void printArray(int* arr, int num)
{
cout<<\"--선택정렬후--\"<<endl;
for(int i=0; i<num; i++)
{
cout<<arr[i]<<endl;
}
}
선택정렬인데 실행하면 다 정렬되는데 이상하게 10하고 12하고만 바껴서 나오네 뭐가 문제지??;;
num - 1부터 num>=0 까지 루프돌아야겟지?
서로 바꾸는 부분에서 temp=a[num-1]; 이렇게 했는데..
sizeof(A)/sizeof(int) 이게 num으로 넘어가면 20부터 순회할거 아녀 -_-.. 한번 좀 그려봐라.
응 20부터 순회하는데 그래서 처음 for문 20부터 끝 배열부터 바꾸면서 하나씩 빼나가게 만들었는데
int a[20]; a[20] = 1; 이거 이상하지 않음?
응 a[20]은 안되지 a[19]..
아 ㅅㅂ 이런 병신새끼들.
http://codepad.org/IUIGggyL