2011-01-06 5 views
0

27527-683
27525-1179
27525-1571
27525-1813
27525-4911
27526-1303
27526-3641
27525-3989
27525-4083
27525-4670
27526-4102
27526-558
27527-2411
27527-4 342버블 정렬을 사용하여 트리 맵을 정렬하는 방법?

이것은지도에서 문자열로 선언 된 키 목록입니다.
그런 다음 오름차순으로 정렬하려고합니다.
지도 내에서 버블 정렬 방법을 어떻게 사용할 수 있습니까?
여기서 키 값은 목록입니다. 순서 은 얻을 :

27525-1179
27525-1571
27525-1813
27525-3989
27525-4083
27525-4670
27525-4911
27526-558
27526-1303
27526-3641
27526-4102
27527-683
27527-2411
27527-4342

+0

bubble-sort는 최악의 정렬과 같으며 트리 구조는 순회 트래버스 만 수행하면됩니다. 아직도, 나는 당신이 주장하는 경우에 대답을 게시했다. –

+0

지도는 어떤 언어로되어 있나? 이 언어에는 주요 순서가 유지되는지도가 있습니까? 당신의 문제는 정확히 무엇입니까? –

+0

첫 번째 목록이 무엇인지 명확히 할 수 있습니까? TreeMap에 나타나는 순서대로 키/값 쌍 목록입니까? 아니면 TreeMap의 값입니까? – templatetypedef

답변

1

트리에서 순서 순회를 수행 할 수 있어야합니다. 당신이 여기에서 주장한다면 부는 당신이하는 일입니다.

keyList = yourTreeMap.getKeys(); 
for(i = keyList.length-1; i > 0; i--) 
    for(j = 0; j < i; j++) 
     if (keyList[j] > keyList[j+1]) keyList.swap(j, j+1); 

lanaguage를 지정하지 않았으므로 psuedocode를 표시합니다.

+0

자바에서 어떻게 할 수 있습니까? 대답 주셔서 감사합니다 :) –

+1

should shouldnt. 실제로 트리 맵을 가지고 있다면'yourTreeMap.keySet(). toArray()'를 실행하고'Arrays.sort'로 결과를 정렬해야합니다. –

+0

무엇을하려고합니까? 이 어레이가 원하는게 뭐야? –

0

일반적으로 방울 정렬 알고리즘은 일반적으로 사용하는 것과 비슷하지만 여기서는 비교 조건을 조정하여 키와 값을 비교하여 무엇보다 큰 것을 확인하고 키를 먼저 비교합니다. 키가 일치하지 않으면 값을 비교 한 다음 값의 차이를 사용하여 스왑 결과를 얻거나 교환하지 마십시오. 현실 세계 시나리오에서 이것을 사용하는 경우 버블 정렬은 효율성이 현저합니다.

존은 내 앞에있는 게시물을 가지고 있지만, 기본적으로 그가 쓴 것은 당신에 대한 복잡한 조건을 싶어 권리를 제외하고 보이는 경우 중첩 루프에서, 그는 또한 어떻게 이러한 언급 한 바와 같이 물론

if(key1<key2) 
    keyList.swap(i,j) 
else if(keyList[key1]<keyList[key2]) 
    keyList.swap(i,j) 

같은 키/값은 실제로 추출/사용됩니다 질문이나 태그에 부족한 언어에 따라 달라집니다.

관련 문제