C ++-연관 배열을 사용하면 값으로 정렬 한 후 키로 검색 할 수 없습니다.

Gerald

아래 코드에는 알파벳 문자를 키로 포함하고 이와 관련된 임의의 값을 포함하는 연관 배열이 있습니다. 값을 내림차순으로 정렬하는 빠른 정렬 기능을 구현했습니다. 특정 키 (문자)를 검색하는 이진 검색 기능이 있습니다. 이진 검색은 정렬하기 전에 잘 작동하지만 정렬 한 후에는 일부 문자 만 사용됩니다. 직접 작업하려고 시도하면서 quickSort ()를 실행하기 전후에 배열을 반복했으며 해당 값이 정렬되었지만 여전히 존재하는지 확인하는 것 같습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

#include <iostream>
#include <array>

using namespace std;

int binarySearch(int arr[][2], int value, int left, int right)
{
    while (left <= right)
    {
        int middle = (left + right) / 2;
        if (arr[middle][0] == value)
            return middle;
        else if (arr[middle][0] > value)
            right = middle - 1;
        else
            left = middle + 1;
    }
    return -1;
}

void quickSort(int arr[][2], int left, int right)
{
    int i = left, j = right;
    int tmp1, tmp2;
    int pivot = arr[(left + right) / 2][1];

    /* partition */
    while (i <= j)
    {
        while (arr[i][1] > pivot)
            i++;
        while (arr[j][1] < pivot)
            j--;
        if (i <= j)
        {
            tmp1 = arr[i][0];
            tmp2 = arr[i][1];

            arr[i][0] = arr[j][0];
            arr[i][1] = arr[j][1];

            arr[j][0] = tmp1;
            arr[j][1] = tmp2;

            i++;

            j--;
        }
    };

    /* recursion */
    if (left < j)
        quickSort(arr, left, j);
    if (i < right)
        quickSort(arr, i, right);

}

int main()
{
    const int alphLength = 26;
    int assocArr[alphLength][2] = { {'A', 5},  {'B', 2}, {'C', 4}, {'D', 3},  {'E', 1}, {'F', 0}, {'G', 0}, {'H', 0}, {'I', 0},
        {'J', 0}, {'K', 0}, {'L', 0}, {'M', 0}, {'N', 0}, {'O', 0}, {'P', 75}, {'Q', 0}, {'R', 0},
        {'S', 0}, {'T', 0}, {'U', 0}, {'V', 0}, {'W', 0}, {'X', 50}, {'Y', 0}, {'Z', 100} };

char a;
char searchLetter = 'Z';

for (int i = 0; i < alphLength; i++)
{
    a = assocArr[i][0];
    cout << "index " << i << ": " << a << endl;
}

cout << "found " << searchLetter << " before quickSort() at " << binarySearch(assocArr, searchLetter, 0, alphLength-1) << endl;

quickSort(assocArr, 0, alphLength-1);

for (int i = 0; i < alphLength; i++)
{
    a = assocArr[i][0];
    cout << "index " << i << ": " << a << endl;
}

cout << "found " << searchLetter << " after quickSort() at " << binarySearch(assocArr, searchLetter, 0, alphLength-1) << endl;

}
벤자민 린들리

이진 검색은 정렬 된 배열에서만 작동하며 검색에서 비교하는 데 사용하는 것과 동일한 기준으로 정렬해야합니다. 배열은 문자 오름차순으로 정렬되고 이진 검색은 문자 오름차순으로 검색하므로 작동합니다. 그런 다음 값을 기준으로 정렬하면 문자가 뒤섞입니다. 그런 다음 문자 오름차순으로 이진 검색을 다시 수행하면 배열이 더 이상 문자 오름차순으로 정렬되지 않기 때문에 작동하지 않습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

AutoHotkey | 키를 사용하여 연관 배열 / 사전에서 값을 검색 할 수 없습니다.

분류에서Dev

memset을 사용하여 0으로 설정 한 후 문자열 배열을 사용할 수 없습니다.

분류에서Dev

PHP를 사용하여 배열을 적절한 형식으로 정렬 할 수 없습니다.

분류에서Dev

값을 정수 배열로 처음 초기화 한 후 다시 초기화 할 수 없습니다.

분류에서Dev

본인이 코딩 한 앱으로 사진을 검색 할 수 없습니다.

분류에서Dev

foreach 루프를 사용하여 키 값 배열을 배열로 설정할 수 없습니다.

분류에서Dev

값이 플랫 배열 인 연관 배열이 주어지면 어떻게 값을 검색하고 키를 반환 할 수 있습니까?

분류에서Dev

Vuetify 열을 검색하거나 정렬 할 수 없습니다.

분류에서Dev

sort ()를 사용하여 이러한 특정 방식으로 객체 배열을 정렬 할 수 있습니까?

분류에서Dev

Java : 배열을 제대로 검색 할 수 없습니다.

분류에서Dev

.profile을 수정 한 후 로그인 할 수 없습니다.

분류에서Dev

.profile을 수정 한 후 로그인 할 수 없습니다.

분류에서Dev

정수 배열을 고유 한 사전 키로 사용할 수 있습니까?

분류에서Dev

asp.net을 사용하여 쿠키 설정에 대한 PHP에서 쿠키 값을 검색 할 수 없습니다.

분류에서Dev

게시 된 변수를 사용하여 설정된 codeigniter 쿠키는 값을 검색 할 수 없습니다.

분류에서Dev

CakePHP 2.4.4 문자열 키와 값으로 Hash :: sort를 사용하여 어떻게 다차원 배열을 정렬 할 수 있습니까?

분류에서Dev

PHP를 사용하여 키 값에 따라 배열을 정렬 할 수 없습니다.

분류에서Dev

Map.get은 문자열 키로 값을 검색 할 수 없습니다.

분류에서Dev

LEFT JOIN으로 정확한 결과를 검색 할 수 없습니다.

분류에서Dev

새 입력 필드를 동적으로 삽입 한 후 입력 값을 설정할 수 없습니다.

분류에서Dev

배열을 값으로 사용하여이 해시를 어떻게 정렬 할 수 있습니까?

분류에서Dev

Mongoose : '경로의 값에 대해 포함으로 전송하지 못했습니다. 'in'연산자를 사용하여 '_id'를 검색 할 수 없습니다.

분류에서Dev

로컬 호스트에서 PHP 리디렉션 (exit () 사용) 후 세션을 검색 할 수 있지만 Godaddy 서버에서는 검색 할 수 없습니다.

분류에서Dev

웹 스크랩 후 사전에서 값을 검색 할 수 없습니다.

분류에서Dev

@OneToMany 연결에서 검색 정렬을 최대 절전 모드로 전환 할 수 없습니까?

분류에서Dev

로그인 후 추가 된 클레임을 검색 할 수 없습니다.

분류에서Dev

본문없이 GET을 사용하여 Elasticsearch에서 한 필드로 검색하고 다른 필드로 검색 할 수 있습니까?

분류에서Dev

redis-cli에서 수동으로 설정 한 값을 검색 할 수 있지만 Spring Boot에서 Redis Reactive를 통해 새 키를 설정할 수 없음

분류에서Dev

알파벳순으로 배열을 정렬 할 수 없습니다.

Related 관련 기사

  1. 1

    AutoHotkey | 키를 사용하여 연관 배열 / 사전에서 값을 검색 할 수 없습니다.

  2. 2

    memset을 사용하여 0으로 설정 한 후 문자열 배열을 사용할 수 없습니다.

  3. 3

    PHP를 사용하여 배열을 적절한 형식으로 정렬 할 수 없습니다.

  4. 4

    값을 정수 배열로 처음 초기화 한 후 다시 초기화 할 수 없습니다.

  5. 5

    본인이 코딩 한 앱으로 사진을 검색 할 수 없습니다.

  6. 6

    foreach 루프를 사용하여 키 값 배열을 배열로 설정할 수 없습니다.

  7. 7

    값이 플랫 배열 인 연관 배열이 주어지면 어떻게 값을 검색하고 키를 반환 할 수 있습니까?

  8. 8

    Vuetify 열을 검색하거나 정렬 할 수 없습니다.

  9. 9

    sort ()를 사용하여 이러한 특정 방식으로 객체 배열을 정렬 할 수 있습니까?

  10. 10

    Java : 배열을 제대로 검색 할 수 없습니다.

  11. 11

    .profile을 수정 한 후 로그인 할 수 없습니다.

  12. 12

    .profile을 수정 한 후 로그인 할 수 없습니다.

  13. 13

    정수 배열을 고유 한 사전 키로 사용할 수 있습니까?

  14. 14

    asp.net을 사용하여 쿠키 설정에 대한 PHP에서 쿠키 값을 검색 할 수 없습니다.

  15. 15

    게시 된 변수를 사용하여 설정된 codeigniter 쿠키는 값을 검색 할 수 없습니다.

  16. 16

    CakePHP 2.4.4 문자열 키와 값으로 Hash :: sort를 사용하여 어떻게 다차원 배열을 정렬 할 수 있습니까?

  17. 17

    PHP를 사용하여 키 값에 따라 배열을 정렬 할 수 없습니다.

  18. 18

    Map.get은 문자열 키로 값을 검색 할 수 없습니다.

  19. 19

    LEFT JOIN으로 정확한 결과를 검색 할 수 없습니다.

  20. 20

    새 입력 필드를 동적으로 삽입 한 후 입력 값을 설정할 수 없습니다.

  21. 21

    배열을 값으로 사용하여이 해시를 어떻게 정렬 할 수 있습니까?

  22. 22

    Mongoose : '경로의 값에 대해 포함으로 전송하지 못했습니다. 'in'연산자를 사용하여 '_id'를 검색 할 수 없습니다.

  23. 23

    로컬 호스트에서 PHP 리디렉션 (exit () 사용) 후 세션을 검색 할 수 있지만 Godaddy 서버에서는 검색 할 수 없습니다.

  24. 24

    웹 스크랩 후 사전에서 값을 검색 할 수 없습니다.

  25. 25

    @OneToMany 연결에서 검색 정렬을 최대 절전 모드로 전환 할 수 없습니까?

  26. 26

    로그인 후 추가 된 클레임을 검색 할 수 없습니다.

  27. 27

    본문없이 GET을 사용하여 Elasticsearch에서 한 필드로 검색하고 다른 필드로 검색 할 수 있습니까?

  28. 28

    redis-cli에서 수동으로 설정 한 값을 검색 할 수 있지만 Spring Boot에서 Redis Reactive를 통해 새 키를 설정할 수 없음

  29. 29

    알파벳순으로 배열을 정렬 할 수 없습니다.

뜨겁다태그

보관