2010-02-13 3 views
1

Delphi/Pascal에서는 TStringList를 사전 순으로 정렬하고 싶습니다. 그러나 이러한 목적을 위해, 나는 단지 다음과 같은 두 가지 방법을 사용할 수 있습니다문자열 목록 정렬 : 항목 만 이동 또는 교환

이동 : 적절한 주변의 다른 문자열을 이동, 또 다른 하나 개의 인덱스 위치에있는 문자열을 이동을.

교환 : 인덱스 위치로 식별되는대로 두 개의 문자열을 목록에서 바꿉니다.

어떻게하면됩니까?

  1. lastFirstLetter : = 복사 (= 복사 (CurrentItem, 1, 1)
  2. currentFirstLetter 다음 항목으로 이동 나는 루프의 모든 항목을 통해이 같은에 갈 생각을했다 CurrentItem, 1, 1)
  3. ORD (currentFirstLetter) < ORD (lastFirstLetter)를 교환 (lastItem에, currentItem)의 경우

무엇 이러한 두 가지 방법과 StringList를 정렬하는 가장 빠른 방법이 될 것입니다? 그런데 sort 메소드와 sorted 속성을 사용할 수 없습니다.

+0

"숙제"로 태그 지정 (예 :있는 것처럼 발음)하면받는 모든 답에 영향을 미칩니다. 자신의 교화를 위해 실제 해결책을 찾아야한다는 사실을 고려하십시오. 행운을 빕니다. – bernie

+0

학교에서 컴퓨터 과학도하지도 않고 공부도하지 않습니다. 내 취미 일 뿐이야. 하지만 이제는 제 질문을 숙제라고 표기 한 것을 받아 들여야합니다 ... – caw

+1

오해에 대한 사과드립니다. 해명 해 주셔서 감사합니다 ...-) – bernie

답변

1

이동/교환 방법 만 있으면됩니다. 그러나 선택할 알고리즘이 많이 있습니다! 나는이 모든 알고리즘은 단지 힙에서 떨어져, '이동'을 사용하는 것이 생각 http://www.sorting-algorithms.com/

을하고 quicksorts은 단지 '교환'

+0

대단히 고마워요! 아마 모든 프로그래머는이 웹 사이트를 알고 있지만 나는 그렇지 않았다 : D 사이트는 훌륭하다! – caw

3

를 사용 : 애니메이션 비교를 (빠른 구글 검색)이 사이트에서보세요 당신은 두 가지 방법을 제공합니다 : (1) 교환 및 (2) 교환.

(3) 문자열에 대한 포인터의 TList를 유지하고 포인터를 정렬 :

은 세 번째 방법이있다.

이 방법을 사용하면 모든 문자열이있는 위치에 있고 더 빠를 수 있습니다.

질문 : Best Way To Sort An Array In Delphi과 배리 켈리의 대답과 다른 답변을 참조하십시오.

+0

감사합니다. 유용한 정보! – caw