알고리즘 선택정렬시 걸리는 측정시간에 대해 질문드립니다~
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void SelectionSort(int* a, int n) {
int MinIndex;
for (int i = 0; i < n - 1; i++) {
MinIndex = i;
for (int j = i + 1; j < n; j++) {
if (a[MinIndex] > a[j]) {
MinIndex = j;
}
}
if (MinIndex != i) {
Swap(&a[i], &a[MinIndex]);
}
}
}
void inverse_SelectionSort(int* a, int n) {
int MaxIndex;
for (int i = 0; i < n - 1; i++) {
MaxIndex = i;
for (int j = i + 1; j < n; j++) {
if (a[MaxIndex] < a[j]) {
MaxIndex = j;
}
}
if (MaxIndex != i) {
Swap(&a[i], &a[MaxIndex]);
}
}
}
int main(void) {
int i, A[10], B[100], C[1000], D[10000], E[50000], F[100000];
int seed = time(NULL);
int start, finish, count = 0, count2 = 0;
double duration, meanduration = 0, avgduration = 0;
srand(seed);
for (i = 0; i < 10; i++)
A[i] = rand() % 10000;
SelectionSort(A, 10);
printf("선택정렬 : ");
PrintSortedArr(A, 10);
(.................)
}
현재 알고리즘을 공부중인 대학생입니다. 선택정렬시에 n이 10,100,1000,10000,50000,100000 일때 난수 생성해서 선택정렬방법으로 걸리는 시간을 측정하는 프로그램을 짜고 있는데 시간 측정하는 부분 (........) 이부분을 잘 모르겠어서 질문드립니다! 이부분 코딩전체를 알려주시면 정말 감사하겠습니다 ㅎㅎ
저는 코딩 보다는 알고리즘을 알려드리겠습니다.
1. 난수를 생성한후 정렬하기 바로전에,
start = clock(); 으로 시간을 저장하구요
2. 원하는 난수 계산이 다 끝난후, 결과 출력하기 바로전에
end = clock(); 으로 또 시간을 저장합니다
3. 결과 출력후, 총 걸린 시간은 end - start 하면 나오는 값이
총 걸린 시간입니다
위에 내용을 토대로 프로그램 작성하시면 잘 동작하리라 생각합니다^^