정렬 구현하기가 어렵습니다

익명 사용자의 이미지

안녕하세요 독학으로 프로그래밍 공부 중입니다
C언어로 자료구조 공부하고 있는데요

정렬 (퀵/병합/힙/계수/기수 등) 구현하는데 어려움을 느끼고 있습니다
책 내용의 이론적인 부분은 이해가되는데
막상 코드로 넘어가면 어려움을 느끼는 구간들이 생기는데요

부분 부분이라 어디 물어볼때도 없고
막상 디버깅을 한다고 해보면 부분부분 헷갈리거나 모르는 부분이 생기는데

예제 코드 상에서 이해가 안되는 경우 어떻게 해결해야할까요?

익명 사용자의 이미지

1. 코딩 얼마나 해 봤나요?

독학으로 프로그래밍 공부한다는 사람들 중에서는 정말로 교본의 예제 코드를 "읽기만" 하는 사람들 종종 봅니다.

만약 귀하께서 그런 케이스라면, 맨 첫장의 hello world부터 시작해서 일일히 직접 옮겨 짜보세요. 직접 타이핑하고 직접 실행해 보면서 배우는 겁니다. 네, 시간이 걸립니다.

예제 코드를 따라 짜서 교본에 나온 대로 실행이 된다면, 재량껏 조금씩 고쳐서 또 테스트해보세요. 그렇게 조금씩 자기 코드를 늘려 보는 거죠.

2. 이론적인 부분은 이해한 거 맞나요?

알고리즘도 마찬가지로, 남이 써 놓은 거 읽기만 하면서 이해했다고 착각하는 사람들이 종종 있지요.

C언어가 잘 안된다면, 뭐 좋습니다. 의사 코드(pseudo code)로 직접 한번 설명해보세요.

혹시 이론이 취향에 맞는다면, 각 정렬 알고리즘이 실제로 정렬을 수행하는지 수학적으로 한번 증명해보세요.

실험 취향인가요? 트럼프 카드라도 한 벌 구해다가 뒤섞은 뒤 알고리즘대로 직접 정렬해 보세요.

웃겨의 이미지

얘는 답변은 안하고, 지 화풀이를 여기다 하는 것 같네!

ㅋㅋㅋ의 이미지

답변은 안하고 쓸데없는 글이나 남기고 갔다는 점에서 피차일반인 듯

세벌의 이미지

zooloo의 이미지

저같은 경우는 인터넷 검색해 여러 블로그 찾아다니면서 각각 다른 설명들을 보니 좀 이해가 되었습니다.
그런데 펌웨어 하실거 아니시면 자료구조와 알고리즘은 실무에서 쓰실일이 없을겁니다
c++만 되도 언어에서 기본으로 지원해주는것도 많고, 데이터가 많으면 보통 디비에 넣어서 씁니다.

ㅋㅋㅋ의 이미지

경력값 하시는듯..

음.. 의 이미지

자료구조와 알고리즘을 실무에서 쓰느냐 아니냐는 자리마다 다르다고 생각합니다. 펌웨어 말고도 쓰는 곳이 많아요. 갖다 쓰더라도 가능한 옵션들 각각에 대해 장단점을 정량 및 정성적으로 분석할 수 있어야 하는데 이게 자료구조와 알고리즘을 모르면 어려울 때도 있구요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.