수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

알고리즘 이렇게 어려운거였나요? ㅜ.ㅡ 초보입니다 도와주세요

헛매질

2023.04.01

알고리즘 과제가 있어 하고 있는데 힘드네요.. c++로 작업을 하고 있는데요..

며칠째 이거만 잡고있지만 하나도 안되네요 다른 것도 공부할거 많은데 ㅜ.ㅡ 도와주세요..

정렬 알고리즘 두개를 구현해야 하는건데요..

하나는 자연합병 정렬알고리즘이구요.. 다른 하나는 토너먼트 정렬알고리즘입니다.

구글이나 네이버에서 참고할만한 소스를 찾아봐도 없네요.. ㅜ.ㅡ

어떤 식으로 구현을 해야할지 모르겠습니다.. 꼭 좀도와주세요..

두 알고리즘을 설명을 하자면 이렇습니다.
=======================================================================
1. 자연합병 정렬
배열이[9 106 7 8 34 5 1 2] 일케 있다면 이미 정렬이 되어있는 것끼리 합병한다는 의미입니다.
즉, 배열에서 이미 정렬된 [9 10] [5 6 7 8] [3 4 5] [1 2] 를 각각을 뭉탱이로 보고
두개씩 합병한다는 의미입니다. 그래서 위의 상태에서 한번 합병이 진행되면
[5 6 7 8 9 10] [1 2 3 4 5] 가 되고 한번 더 합병하면
[1 2 3 4 5 6 7 8 9 10]가 최종적으로 되어서 정렬이 된다는 의미입니다.

2. 토너먼트 정렬
스포츠에서 이긴사람이 토너먼트로 올라가는 것과 비슷한데요.. 먼저 완전이진트리를 만들고 단말노드들에 배열의 값을
전부넣습니다.그상태에서 대진표보면 16강에서 결승까지 올라가듯이 배열에서 복사한 단말노드 두개의 숫자를 비교해서
큰 수를 부모노드로복사하고 또 동일 레벨 노드들끼리 비교해서 위로 올리고를 반복합니다. 그러면 완전이진트리의
젤 위에는 배열의 원소중에서 젤 큰 숫자가 들어가게 됩니다. 그 큰 숫자는 배열중에서 젤 큰 숫자이고 방금까지의 과정을 한번
더 반복하면 그 다음으로 큰 숫자가 나오고 또 하면 또 그 다음으로 큰숫자가 나오고 이과정을 반복해서 정렬된
배열을 얻습니다.
=============================================================================
저의 문제점)
1. 자연합병정렬 : 제가 재귀함수를 구현하는게 굉장히 미흡합니다. 이거 진짜 며칠동안 해봤는데 어떻게 진행을 해야할지
모르겠습니다. 일단 이미 정렬된 런에서의 첫번째 값을 가진 배열인덱스를 기억해두었다가 하는 방법으로
해보기도 하고,런을 두개를 구한담에 합병먼저 해보려고도 해봤는데 왠지 뭔가 잘못된거같아서요..
구현을 어떤식으로 진행을 해야할까요?

2. 토너먼트 정렬 : 책에 설명은 먼저 완전이진트리를 만들고 단말노드에 배열의 값을 복사하는 게 첫단계고
두번째가 단말노드들의 값을 비교해서 부모노드에 복사하는건데요.
두번째 과정은 어떻게 해야할지 감을 잡았어요 근데 첫 번째 과정은 어떻게 해야할지 몰겠습니다.
첫번째 과정만 구현한다면 두번째는 할 수 있을 것 같습니다. 도와주세요 고수님들.. ㅜ.ㅡ

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 청식

    정말 많이 써주셨네요.. 감사합니다 ㅜ.ㅡ 이제 남은 건 제 몫인것 같네요 ㅎㅎ 진짜 해보이겠습니닷!!

  • 후력

    아침부터 회사에서 먼짓을 하는지-_-;; 써놓고 보니 그닥 도움은 안될 것 같지만.. 생각하시는데 조금이라도 도움이 되었다면 좋겠네요.

  • 목소리

    push 기능은 left - right 순으로 집어 넣으면 되는데 full binary tree 이므로 현재 depth 를 반영하여 쭈욱 넣으면 되겠죠. 현재 depth 에서 넣을 수 있는 node 의 한계에 도달하면 depth 가 하나 늘면서 아래 줄에 노드들을 붙이면 되구요.

  • 큰맘

    1. node 를 만듭니다. 이 node 는 배열의 값을 넣을 수 있고 초기화시 parent, left/right child 가 null 이 되어야 겠지요. 2. full binary tree 를 만듭니다. 이 tree 는 root node 를 가지고 있습니다. 3. tree 에 push 하는 기능을 넣습니다.

  • 찬바리

    2번 정렬의 경우, 완전이진트리를 만들고 복사하는 부분이요, 일딴 1개의 parent 와 두개의 child(left, right child) 를 가지는 node 를 만들고 이 node 에 배열의 값을 순차적으로 집어 넣으면서 tree 에 push 하시면 될 것 같은데요.. 최대한 간단하게 생각하시고 하나씩 기능을 구현하시면 ;;

  • 연와인

    즉, 버블 소팅에서 숫자의 크기를 비교하는 비교 부분만 뭉탱이의 순위를 가리는 비교로 바꾸면 정렬이 가능해진다는 것입니다. 정리하면, 1회 스캔하여 연속된 숫자들의 집합을 분리하고 각 집합을 정렬한다.. 정도가 되겠네요.

  • 온새미로

    일반적인 숫자열이 있고 이미 정렬된 녀석들은 정렬할 필요가 없다는 전제라면.. 연결된 숫자들을 뭉탱으로 정리하여 각 뭉탱이가 가지고 있는 앞/뒤의 숫자만 가지고 정렬할 수 있습니다. 단순히 버블을 사용하거나.. 원하는 알고리즘을 사용해서요..

  • 옆집언니야

    일딴.. 1번 정렬의 경우 문제가 좀 있는 것 같습니다.. 무엇인고 하니.. 과연 숫자가 [9 10] [5 6 7 8] [3 4 5] [1 2] 요런식으로 순진하게 있느냐 하는 것인데.. [5 6 7 8] [3 4 5] [1 2] [9 10] 요렇게 있으면 말씀하신 방식의 정렬에 문제가 발생합니다. 즉, 2번에 정렬 안됩니다. 이걸 2번에 정렬하느냐.. 아니냐에 따라서 또 구현 방식이 달라질 것 같은데요..

번호 제 목 글쓴이 날짜
2699518 javaScript중복체크 하는법좀.. 알려주세요 (3) 비 2025-06-26
2699495 이런 탭메뉴를 뭐라고 해야 하는지 모르겠네요 (1) 들빛 2025-06-26
2699380 메뉴가 계단식으로 나타나요.. ㅠ.ㅠ (5) 스릉흔다 2025-06-25
2699354 영문 웹폰트 관련 질문입니다!!! (1) 치킨마루 2025-06-25
2699329 윈도우 미디어 플레이어 URL 질문!!! (1) 제철 2025-06-25
2699296 동영상 배경 질문드려요!!!!!!!!!!!!!! 핫파랑 2025-06-24
2699214 position:fixed 에 대한 질문입니다.. (7) 사이 2025-06-24
2699183 제이쿼리 이미지 슬라이드 위치값 수정 초엘 2025-06-23
2699153 테마[ADORABLE]에서 페이지생성시 하위페이지는 2개밖에 안되나요? 흰여울 2025-06-23
2699129 네이버 블로그 또는 사이트의 글을 불러오기 갤원 2025-06-23
2699070 탭메뉴처럼 셀렉트 박스를 이용해서 내용을 출력할 수 있는 방법이 있을까요. (3) 큰꽃늘 2025-06-22
2699016 인터넷이 안되는 환경에서 validator설치방법 (3) 은송이 2025-06-22
2698988 대체 C++ 6.0 exe 아이콘은 어떻게 넣는건가요? 외국녀 2025-06-22
2698960 음성파일을 embed로 작업했는데..웹 표준코딩으로 변경하려면 어떻게 해야하나요? (1) 잎새 2025-06-21
2698932 메뉴목록 풍선창 만들기 html (2) 하늘이 2025-06-21
2698901 http://www.zeitgeistbot.com/ 이 사이트처럼 움직이는 효과를 무엇이라고 하나요? 누림 2025-06-21
2698876 table width값 크로스브라우징에 대한 문의 (2) 볼수록매력 2025-06-21
2698849 c언어 질문. (3) 아름나 2025-06-20
2698823 setInterval 이벤트 제거 하려면... 가온길 2025-06-20
2698796 이 오류를 이해를 못하겠어요 Addicted 2025-06-20
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com