c언어 라이브러리에 qsort 함수 질문!
글쓴이: sunpark20 / 작성시간: 수, 2012/12/05 - 6:33오후
qsort 를 이용해서 배열 하나가 아니라 여러개? 를 정리하고 싶어요
qosrt의 기본적인 사용법을 배웠습니다
qsort(시작위치,전체길이,하나길이, 비교함수 )
qsort 를 이용해서 배열 하나가 아니라 여러개? 를 정리하고 싶어요 이 말이 이해가 잘 안되실텐데 //
예를 들어서 a[5]의 값이 4,3,1,1,2 이고
b[5]의 값이 3,5,3,7,8 이면
a순으로 정리를 하면 b의 값도 같이 따라오는 식으로
정렬 후
a 1,1,2,3,4
b 3,7,8,5,3
그리고 만약 a가 같다면 b의 오름차순으로 정렬하기 .
이런것들을 하고 싶은데 .. 버블소트에서 밖에 못하겠네요 .. ㅠ.ㅠ
옛날에 qsort를 이용해서 할 수 있다고 들었는데 까먹고 못 찾겠네요 ㅠㅠ..
물론 퀵솔트의 방식을 이해하면 어떻게 할 수 있을 것 같은데 지금 빨리 쓰고 싶어서 질문드려요~
Forums:
글쎄요... 라이브러리에 있는 qsort에는
글쎄요... 라이브러리에 있는 qsort에는 비교함수는 지정해 줄 수 있지만 스왑은 어쨌거나 인자로 주어진 배열밖에 못 하니까,
애초에 소트 과정 중에 a와 b배열을 동시에 스왑하려면 그렇게 퀵소트를 구현해야만 하지 않으려나요?
제가 생각하는 최선은
좋은 하루 되세요!
이상하지만 되네요
이상해요.
strcmp로 비교하여 나온 리턴값으로 하면. 잘 됩니다. 왜 되는지 아시는분 설명점 해주세요.
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
갸웃갸웃하면서 보다보니, 본문 질문과는 무관한
갸웃갸웃하면서 보다보니, 본문 질문과는 무관한 얘기였군요.
strcmp 도 뭐 결국은 두 문자열의 같은 자리끼리 코드값 숫자를 비교하는 거니까, char 배열을 정렬하는 데 비교함수로 쓰여서 성공하는 게 별 이상하진 않죠.
다만 strcmp의 특성상,
만일 a와 b주소에 저장된 값이 같다면 그 다음 번지에 있는 값들을 비교하면서 (널캐릭터 만날 때까지) 진행할테니, 아주 운이 없으면 배열 범위를 벗어나서 검사하다가 죽을 수도 있겠군요.
그리고 안 된다고 하신 코드의 경우는
a와 b가 아니라 *a와 *b를 비교하셔야겠죠.
그리고 return 값은 음수,0,양수 여야지 지금처럼 하시면 a나 b나 다 양수겠네요.
좋은 하루 되세요!
잘되네요.
근데. 짱구 성우분 목소리로 들립니다. ㅡ_ㅡ;;;
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
댓글 달기