여기가 포인터 이게 본배열 가리켜서 포인터로만 정렬
개고수 형님들...
혼자 공부하면서 궁금한게 생겼늗네
음 내가 궁금한게
sort[]라는 배열이 있어 5~6개쯤? 근데 이거를 포인터로 가리켜서
오름차순정렬 내림차순 정렬을 해야해
근데 여기서 궁금한게
요점은 저 sort 배열의 데이터를 건드리면 안대
근데 포인터를 사용하고 함수를 통해서 배열의 데이터를 받고 정렬을하면 자꾸 sort의 데이터가 바뀌는거야
내생각은 포인터는 주소값을가리켜서 연산하는거니까 sort 배열을 건드릴수밖에없자나
목표는 포인터로 가리킨값으로 정렬을하고 본배열은 건드리지않는건데
진짜 모르겠다..
아무리 포인터로 해도 sort를 건드리네..
도서관가서 책다뒤져봐도 그냥 포인터의 기본만 나와있고 ...
==============================================================
이 문제의 해결 방법으로 포인터 배열을 생성하여 주어진 배열을 가리키도록 한다. 현재 배열에 데이터가 {25, 17, 12, 13, 20} 이라고 가정하면 다음 그림과 같이 포인터 배열을 생성하여 주어진 배열을 가리키도록 한다. 오름차순으로 정렬하기 위해서는 포인터 배열이 가리키는 데이터 배열을 비교하여 오름차순이 되도록 포인터를 재배열한다. 포인터 배열이 가리키는 내용을 출력하면 오름차순의 정렬된 데이터를 얻게 된다. 내림차순은 오름차순과 반대로 포인터 배열을 재배열하여 출력하면 내림차순의 정렬된 데이터를 얻게 된다. 주어진 데이터 배열을 교환하지 않고 포인터 배열을 필요에 따라서 재배열하면 오름차순과 내림차순의 데이터를 얻게 된다.
===================================================
이게 팁인거같은데 어떻게 하는질 모르겠다.
문자열 배열을 소트 한다고 생각한다면 ?
아.. 포인트를 멤버로 가지는 배열이 있고, 원 Static한 값이 존재하고 그 원 Static한 값을 기준으로 포인트를 멤버로 가지는 배열을 소팅하라는 말이넹. ㅋㅋ
소트는 하는데 본 배열의 값은 건드리지말고 정렬하는게 요점이야 횽아 ㅠㅠ
table sort
원래배열 -> 포인터로 오름차순 정렬 - >다시 내림차순 정렬 > 바뀌지않은 원래 배열 이런식? 어케해야될까 이게 엄청 어려운게아닌데 ㅠㅠ나는 왜그러지
그냥 *p[i] 를 스왑하지 말고 p[i] 를 스왑하면 될거 아니냐
주소값만 바꾸라는 얘기아니냐
주소값만 바꾸면 sort(본 배열)에 있는 배열은 안바뀌는거야?
그럼바뀌겟냐?
아! 주소값만 따오고 바꿔서 출력을하면 본배열은 안바뀌는 뜻인가??? 오오오 될거같네 함해볼게ㅋㅋㅋ 좀 생각해봐야겠다
오 형 고마워 굳 짱짱맨
int arr[5]={3,5,1,2,4}; 가 있다고 치고 arr = 0x100 이라고 할 때 arr[0] = 0x100, arr[1] = 0x104, arr[2] = 0x108, ... 이라고 가정하고 포인터 배열 int *p[5]; 가 p[0] = 0x100, p[1] = 0x104, ... 라고 가정할 때 p[0] 과 p[2] 를 스왑했을 경우 p[0] = 0x108 , p[2] = 0x100 이 되고 *p[0] = 1 , *p[2] = 3 이 되는 거다.