문제
내가 작성한 코드
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
void sort(int **ptr, int len); // sort 함수 선언
int main() {
int n; //배열 크기
scanf("%d", &n);
int num[n][n]; //2차원 배열
int list[n*n]; //정렬할 배열
int l = 0;
for(int i = 0; i<n; i++){
for(int j = 0; j<n; j++){
scanf("%d", &num[i][j]);
list[l] = num[i][j];
l++;
}
}
int*ptr = &list; //포인터에 리스트 저장
sort(&ptr, n*n); //정렬함수 호출
//결과 출력
l = 0;
for(int i = 0; i<n; i++){
for(int j = 0; j<n; j++){
printf("%d ", *(ptr+l));
l++;
}
printf("\n");
}
return 0;
}
void sort(int **ptr, int len){
for(int i = 0; i<len; i++){ //정수 개수만큼 반복
int min = *(*ptr+i); //최솟값 저장
int minindex = i; //최솟값 인덱스 저장
for(int j = i; j<len; j++){ //뒤까지 가며
if(*(*ptr+j)<min){ //최솟값보다 작을 경우
min = *(*ptr+j); //최솟값 갱신
minindex = j; //인덱스도 갱신
}
}
//자리 바꾸어주기
int tmp = *(*ptr+i);
*(*ptr+i) = *(*ptr+minindex);
*(*ptr+minindex) = tmp;
}
}
'C언어 > 주차별 문제' 카테고리의 다른 글
[11주차] 정방행렬의 덧셈 (0) | 2023.06.08 |
---|---|
[11주차] 배열의 최소값 모두 더하기 (0) | 2023.06.08 |
[10주차] 역방향 출력 (0) | 2023.06.06 |
[10주차] 포인터를 이용하여 배열의 값 변경하기 (0) | 2023.06.06 |
[10주차] 배열의 Swap (0) | 2023.06.06 |