2009-09-29 6 views
0

이 연결된 목록에 설정된 이미지의 해시 값이 있습니다. 나는 단순하지만 매우 빠른 정렬을 실행하려고 계획하고 있으며 지금까지 나는 그 중 두 개만 병합했습니다. 정렬 및 빠른 정렬을 병합합니다.정렬 알고리즘

내 빠른 정렬 구현은 숨은 것처럼 보였고 10 초 이상의 이미지를 정렬하는 데 오랜 시간이 걸렸습니다 (약). 병합 정렬은 정상적으로 작동하는 것 같지만 단지 빠르지 않습니다 (약 3 초).

다른 제안 사항도 괜찮습니다.

추신 : 저는 모바일 용 이미지 뷰어를 구축하고 있습니다. 응용 프로그램에 대한 주요 기준은 속도에 달렸습니다. 범위 조정 레벨을 통해 이미지를 정렬하기위한 정렬 알고리즘이 필요합니다. (그것의 단지 실험).

다른 입력도 정말 도움이 될 것입니다.

+2

얼마나 많은 이미지가 있습니까? 합리적인 숫자의 경우,이 알고리즘 중 하나에 대해 15 초 이상 걸리지 않아야합니다. 가치가 필요할 때마다 각 이미지의 대비 수준을 다시 계산할 가능성이 있습니까? quicksort 또는 mergesort에 대해서는 많은 추가 재 계산이 필요합니다. – jprete

+0

정렬하는 동안 많은 양의 데이터를 복사하는 것처럼 들립니다. 정렬 알고리즘이 완료되면 쌍을 정렬하고 포인터를 이미지로 이동 한 다음 이미지를 이동하는 것은 어떻습니까? – fbrereto

+0

이미지에 해시 값이 이미있는 경우 혼란 스럽습니다. 15 초 이내에 손으로 10 개의 값을 정렬 할 수 있어야합니다. 이미지에 액세스 할 때마다 해시 값을 생성합니까? –

답변

2

삽입 시간에 올바른 위치에 이미지를 배치하는 정렬 된 목록을 사용하는 것은 어떻습니까? 삽입 지점을 찾는 비용은 여전히 ​​있지만 사용자에게 친숙 할 수 있습니다. 사용자가 그림 목록에서 수동으로 선택하면 약간 더 긴 삽입 시간이 될 수 있습니다.

+0

hmmm ...... 삽입 정렬 좋은 대안처럼 보이지만, 나는 수동 접근 방식을 생각하지 않았습니다. 감사합니다. –

1

빠른 정렬은 빠른 시간 내에 O (1) 일정 시간 내에 배열의 임의 요소에 대한 액세스가 필요합니다. 연결된 목록은 O (n) ...

+0

왜 이렇게 작은 n이지만 알고리즘이 그렇게 느린 지 설명하지는 않지만 여전히 좋은 점입니다. –

+0

동의하지만 연결 목록이 두 번 끝나면 일반적으로 추가 된 새 이미지 또는 목록의 중간 요소부터 시작합니다 (파일 이름별로 정렬되어 있습니다 (중요하지 않습니다)) –

+0

은 더블 엔드 연결된 목록 O (n) 걸릴 것입니다, 그 덕분에 –