mycodeschool에서이 구현을 배웠습니다. 그 방법은 저에게도 괜찮은 것 같습니다. 강사가 가르치는 방법이며 동일한 구현을 수행했지만 어떻게 든 제 코드가 문제가됩니다. 오류가 어딘가에 있기 때문에 시간 함수를 무시하십시오. 나는 그것을 제거하고 오류는 여전히 동일합니다.내 삽입 정렬 코드에 문제가 있습니다
//insertion sort
#include<iostream>
#include <ctime>
using namespace std;
class insertion{
public:
insertion(){} //constructor
void sort(int a[], int n) { //insertion sort function
for (int i = 1; i < n; i++) {
int value = a[i];
int index = i;
while (i > 0 && a[i - 1] > value) {
a[index] = a[index - 1];
index=index-1;
}
a[index] = value;
}
}
//display function
void display(int a[], int n) {
for (int i = 0; i < n; i++) {
cout << a[i] << endl;
}
}
};
void main(){
insertion ins;
int a[10];
int n = 10;
cout << "Enter the elements:" << endl;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
unsigned int start = clock(); //measuring time of sort from here
cout << "waiting for keyhit";
cin.ignore();
ins.sort(a, n);
ins.display(a, n);
cout << "Time taken in millisecs: " << clock() - start; //to here
cin.ignore();
}
디버거를 사용하여 코드를 단계별로 실행하는 방법을 배워야 할 수도 있습니다. 좋은 디버거를 사용하면 한 줄씩 프로그램을 실행하고 예상 한 곳에서 벗어난 곳을 볼 수 있습니다. 프로그래밍을 할 때 필수적인 도구입니다. 추가 읽기 : ** [작은 프로그램을 디버깅하는 방법] (http://ericlippert.com/2014/03/05/how-to-debug-small-programs/) ** – NathanOliver
스와핑이 제대로 수행되지 않습니다. 너의 경우. –
"문제 제기"... 문제가 무엇인지 구체적으로 설명 할 수 있습니다. – crashmstr