2009-12-27 4 views
2

저는 현재 PHP와 Ruby on Rails를 웹 개발자로 사용하고 있습니다. 내 질문은 알고리즘과 데이터 구조를 알아야하는 이유입니다. 먼저 C, C++ 또는 Java를 배워야합니까? 알고리즘과 데이터 구조를 아는 실제적인 이점은 무엇입니까? 일반인의 용어로 알고리즘과 데이터 구조는 무엇입니까? (당신이 불행하게도 말할 수 나는 CS 과정을 수행하지 않았습니다.)평신도 용어로 알고리즘 및 데이터 구조 란 무엇입니까?

가능한 한 많은 정보를 제공하고 사전 ;-) ​​

+5

당신은 데이터 구조없이 어떤 소프트웨어를 작성하려면 어떻게해야합니까? –

+3

"데이터 구조"라고 불리지 않고 데이터 구조를 사용할 수 있습니다. – Rich

+0

"가능한 한 많은 정보를 제공해주세요"- 위키 백과 참조. –

답변

8

데이터 구조는 단지 당신이 할 수처럼 물건을 저장하는 방법입니다 당신을 감사하십시오 스택, 대기열, 힙 및 버킷에 물건을 넣으십시오. 동일한 작업을 데이터로 수행 할 수 있습니다.

알고리즘은 요리법 또는 지침이며, 커피 메이커의 빠른 시작 설명서는 커피를 만드는 알고리즘입니다.

1

알고리즘은 지침 목록이며 데이터 구조는 정보를 나타내는 방법입니다. 컴퓨터 프로그램을 작성한다면 단어가 무엇을 의미하는지 모를지라도 이미 알고리즘과 데이터 구조를 사용하고있는 것입니다.

나는 표준 알고리즘과 데이터 구조를 알 수있는 가장 큰 장점은 생각 :

  • 당신은 공통의 언어를 사용하는 다른 프로그래머와 통신 할 수 있습니다.
  • 일단 다른 사람이 떠나면 코드를 이해할 수 있습니다.

일반적인 문제를 해결하기위한 더 나은 방법을 배우게됩니다. 어쨌든 표준 방법을 모르더라도 궁극적으로 이러한 문제를 해결할 수 있지만 휠씬 재발 명하는 데 많은 시간을 투자하게 될 것이며 수천 명의 전문가가 작업하고 개선 한 것만 큼 솔루션이 좋지 않을 것입니다 년.

0

알고리즘은 계산과 관련된 프로세스의 표현입니다. 그런 다음 알고리즘이 갈 수있는 두 개의 번호를 추가하고 싶다면

:

첫 번째 번호를 얻으십시오; 두 번째 숫자를 가져옵니다. 두 번째 숫자에 첫 번째 숫자 추가; 결과가 없습니다.

가장 단순한 알고리즘은 단지 구조화 된 목록 일뿐입니다. 컴퓨팅에서의 사용은 사람들이 코드 뒤에 의도를 볼 수있게 해주고 논리적 (구문 론적 오류와 반대되는) 오류를 발견하기 쉽게 만듭니다.

위의 3 단계가 add 대신에 곱한다면 누군가가 코드를 디버깅 할 필요없이 로직에서 오류를 지적 할 수있을 것입니다.

데이터 구조는 시스템의 데이터를 참조하는 방법을 나타냅니다. 테이블 구조와 정확히 일치하거나 데이터 액세스를 쉽게하기 위해 정규화되지 않을 수 있습니다. 가장 간단한 방법은 시스템의 엔티티가 어떻게 관련되는지 보여 주어야합니다.

너무 자세하게 들어가기에는 너무 많은 주제이지만 웹에 많은 자원이 있습니다.

0

데이터 구조는 소프트웨어가 소수의 사용자 이상이면 중요합니다. 알고리즘은 폭 넓은 주제이며 데이터 구조에 대한 지식이 있으면 성능 문제를 해결할 수없는 경우이를 연구하고 싶을 것입니다.

PHP (및 다른 고수준 언어)가 어디에서 눈에 보이지 않는 한 많은 정보를 볼 수 있지만 데이터 구조 지식의 이점을 얻으려면 새 프로그래밍 언어가 필요하지 않습니다. Java는 이와 같은 것들에 대한 개인적인 선호 언어입니다.하지만 꽤 주관적입니다.

1

alt text http://mitpress.mit.edu/images/products/books/9780262033848-medium.jpg이 책의 내용은 bible on algorithms입니다. 일반적으로 데이터 구조는 메모리에 액세스하기 위해 데이터를 구성하는 방법과 관련되며 알고리즘은 문제를 해결할 수있는 메서드/소형 프로그램입니다 (예 : 목록 정렬).
주의해야 할 이유는 먼저 코드에서 무엇이 잘못 될 수 있는지 이해해야합니다. 잘못 구현 된 알고리즘은 "검증 된"알고리즘과 비교하여 매우 나쁜 성능을 발휘할 수 있습니다. 고전적인 알고리즘과 그로부터 기대되는 성능을 아는 것은 코드가 얼마나 좋은지, 그리고 개선 할 수 있는지 여부를 아는 데 도움이됩니다.
그런 다음 휠을 재발견 할 필요가 없으며 잘 알려진 구조 또는 알고리즘의 버그가 있거나 차선의 구현을 다시 작성해야합니다.

1

알고리즘은 매우 간단하게 사용자가 수행하는 단계입니다. 예를 들어 커피 메이커 알고리즘은 커피 메이커에

  1. 전원을 켜고 같은
  2. 갈기 커피 콩
  3. 시작 양조 과정
  4. 물을 추가 필터에 필터와 장소 커피에 넣어를 실행하는 것입니다
  5. 음료 커피

데이터 구조는 수단 b y 우리는 체계적으로 정보를 저장합니다. 자세한 내용은 Wikipedia Article을 확인하십시오.

1

알고리즘은 일련의 문제를 해결하기 위해 잘 정의 된 단계입니다.

데이터 구조는 데이터를 저장하고 구성하여 액세스 및 수정을 용이하게하는 방법입니다.

표준 알고리즘과 데이터 구조를 아는 것의 이점은 개발할 수있는 것보다 훨씬 낫습니다. 그들은 대부분의 프로그래머보다 훨씬 지능적인 사람들이 수개월 또는 수년간의 작업을 한 결과입니다. 데이터 구조 및 알고리즘의 범위를 알면 데이터 구조 또는 알고리즘에 문제를 대략적으로 맞출 수 있으며 필요에 따라 조정할 수 있습니다.

1

"요리/베이킹 등가물"의 클래식 알고리즘은 조리법이며 자료 구조는 측정 컵, 과자 굽는 판, 쿠키 커터, 믹싱 볼 및 본질적으로 사용하는 다른 도구입니다 (귀하의 밥솥은 귀하의 컴파일러입니다)/통역사, 그래도).

0

제 질문은 왜 알고리즘과 데이터 구조를 알아야합니까?

평범하지 않은 프로그래밍을 수행하는 경우 휠의 재발생을 방지하기 위해 클래스 데이터 구조와 알고리즘 및 용도를 이해하는 것이 좋습니다. 예를 들어 배열 순서를 지정해야하는 경우 다양한 정렬 방법을 이해해야하므로 작업중인 작업에 가장 적합한 것을 선택할 수 있습니다. 잘못된 접근 방식을 선택하면 일부 상황에서는 전반적으로 비효율적 인 프로그램으로 끝날 수 있습니다.

은 내가 먼저 C, C++ 또는 Java를 배울 필요합니까?

알고리즘 및 데이터 구조의 기능을 이해하려면 일부 언어로 프로그래밍하는 방법을 알아야합니다.

알고리즘과 데이터 구조를 알 수있는 실질적인 이점은 무엇입니까?

주요 실질적인 이점은 다음과 같습니다

  • 사각형 바퀴의 문제를 방지하기 위해 모든 시간 바퀴를 재발견하는 것을 방지 할 수 있습니다.
관련 문제