이 :
title_arr[j] = title_arr[i];
당신이 그 (것)들을 교환하지, 당신은 단지 다른 하나의 복사
char* title_temp = title_arr[i];
title_arr[j] = title_temp;
은 동일합니다. 다음 행을 추가해야합니다.
title_arr[i] = title_arr[j];
그렇게하면 [i]
을 [j]
으로 덮어 쓰 겠지만 의 이전 값을 여전히 보유하고 있으므로 [j]
에 복사하여 교환 할 수 있습니다.
알고리즘에 대한 강의 시간이기도합니다. 귀하의 알고리즘은 "bubble sort" 알고리즘으로 알려져 있습니다. 단순함으로 알려져 있지만 현실적인 상황에서는 비효율적 인 것으로 알려져 있습니다 (기술 용어는 "suh sux"이고 실제 기술 용어는 O(n^2)
("N 제곱") 성능 임). 좀 더 일반적인 (보다 효율적인) 알고리듬은 Quicksort, merge sort 및 Heapsort을 포함합니다. 알고리즘 확장 성 측정에 대한 자세한 내용은 Big Oh notation의 기사를 참조하십시오. *
그러나 메모에 설명 된대로 할당이 자신의 정렬 기능을 작성하지 않으면 qsort
으로 더 나은 성능을 얻을 수 있습니다 C에서) 또는 std::sort
(C++에서).
int mystrsort(const void *a, const void *b)
{
return strcmp(*(const char **)a, *(const char **)b);
}
// later:
qsort(title_arr, sizeof title_arr/sizeof(char *), sizeof(char *), mystrsort);
내가 std::sort
에 찔러 않을거야,하지만 그것을 (쉽게 아마도) 같은에 대해 작업 할 것입니다. **
*가 좋아하는 사람이 이러한 위키 백과 링크를 자유롭게 변경할 수 있음을 유의 스택 오버플로 링크. 내가 더 빨리 필요한 정보를 찾는 방법을 알고 있었기 때문에 SO에 링크하는 것이 더 좋을 것입니다. Wikipedia에 연결했습니다.
** 좋아하는 사람은 누구나 std::sort
예를 자유롭게 추가 할 수 있습니다. 나는 C++에 익숙하지 않다.
왜'qsort' 나'std :: sort'를 사용하지 않으시겠습니까? – vava
제공된 표준 알고리즘을 사용하는 대신 자신의 롤업을 시도 할 때 발생하는 현상입니다. 어리석은 작은 버그를 소개하는 것은 너무 쉽습니다. –