저는 프로그래밍 초보자이며 정렬 작업 만하고이 알고리즘을 만들었습니다. 그것은 버블과 비슷하지만 인접한 쌍이 아니라 쌍을 비교합니다 : 첫 번째와 두 번째, 첫 번째와 세 번째 ... 두 번째와 세 번째, 두 번째와 네 번째 등등. 알고리즘의 성능/효율성이 무엇인지 나 거품과 비교해 보시겠습니까? 또는 적어도 문제를 직접 해결하는 방법에 대한 조언. 나는이 거품보다 얼마나 거품이 더 좋은지에 관심이 있습니다. 고맙습니다. 그 첫 번째 N 개 요소들이 올바른 위치에 외부 루프의 n 번째 반복에 말할 때정렬 알고리즘 효율/성능
void sortArray(int a[]) {
int q, x, temp;
for (q = 0; q < SIZE - 1; q++) {
for (x = q + 1; x < SIZE; x++) {
if (a[q] < a[x]) {
temp = a[q];
a[q] = a[x];
a[x] = temp;
}
}
}
}
알고리즘을 테스트 해 보셨습니까? 그것은 정말로 정렬됩니까? –
자신에게 물어볼 필요가있는 것은 "평균적으로 얼마나 많은 비교가 이루어 지는지"입니다. 예를 들어 배열에서 왼쪽에서 오른쪽으로 가장 큰 수를 검색 할 때 평균 수는 목록 길이의 절반입니다. – keyser
[선택 정렬]과 유사합니다 (http://en.wikipedia.org/wiki/Selection_sort). 외부 루프의 n 번째 반복에서 목록의 처음 n 개 요소는 올바른 위치에 있습니다. 그래도 네가 더 많은 스왑을 수행한다. 선택 정렬에서는 외부 루프 반복마다 하나의 스왑 만 수행됩니다. – Kevin