이 프로그램을 사용하여 숫자 목록을 정렬했습니다. 선생님이 선별하는 것으로되어 있지만, 선생님이 선생님이 버블 정렬과 비슷한 방식으로 작동한다고 말하면서 고쳐야합니다. 변경해야 할 부분에 대한 제안 사항은 무엇입니까?선택 정렬 대 버블 정렬 C++
#include <iostream>
using namespace std;
void printArr(const int a[], int s);
void swapVals(int& v1, int& v2);
void sortArr(int a[], int s);
int main()
{
const int s = 20;
int arr[s] = {8, 38, 25, 4, 47, 47, 38, 36, 3, 33, 2, 19, 16, 30, 5, 47, 16,
38, 13, 1
};
cout << "Unsorted array:\n";
printArr(arr, s);
cout << "\n\n";
sortArr(arr, s);
cout << "Sorted Array:\n";
printArr(arr, s);
cout << "\n";
return 0;
}
void sortArr(int a[], int s)
{
for (int i = 0; i < s-1; i++)
{
int index = i;
for (int j = i + 1; j < s; j++)
if (a[j] < a[index])
index = j;
swapVals(a[index], a[i]);
}
}
void swapVals(int& v1, int& v2)
{
int temp = v1;
v1 = v2;
v2 = temp;
}
void printArr(const int a[], int s)
{
for (int i=0; i<s; i++)
{
cout << a[i];
if (i != s-1)
cout << " ";
}
}
https://en.wikipedia.org/wiki/Selection_sort의 알고리즘 코드 예 - 구현에 'iMin! = j' ('index! = i')에 대한 테스트가 있습니다. 그렇지 않으면 똑같아. 도움을 줄 다른 사람들을위한 코드를 제시 할 때'FindMIn()'과 같이 불필요한 코드를 사용하지 않아도됩니다. 아마도 선생님은 일관성없는 들여 쓰기로 혼란스러워 할 것입니다. 즉, 당신을 위해 그것을 고쳤습니다. (그리고 그냥 findMin()을 제거했습니다. – Clifford
형식을 명확하게 지정하고 이해가 가능함을 나타내는 주석을 추가하여 웹에서 복사 한 다음, 값 자체를 바꾸어서 다시 제출하지 않도록 점검을 추가하십시오. 선택 정렬 구현이지만 명확하지 않을 수 있습니다 . 또한 단일 명령문 코드 블록 주위의 중괄호를 사용하는 것이 좋습니다. 훨씬 명확합니다. 특히 들여 쓰기가 자신의 것과 들쭉날쭉하지 않은 경우 특히 그렇습니다. – Clifford
여기 약간의 도움이 될 수 있습니다. (http://www.cs.csubak.edu/~msarr/visualizations/ComparisonSort.html) – Tyger