이 의사 코드를 C++로 번역하는 데 어려움을 겪고 있습니다. 목표는 A []에 난수를 생성하고 삽입 정렬을 사용하여 정렬 한 다음 실행 시간을 밀리 초 단위로 가져 오는 것입니다. 삽입 정렬은 m = 5 번 실행됩니다. 각 n 값은 100, 200, 300, ..., 1000이어야합니다. 예를 들어, n = 100이면 5 개의 다른 난수 세트로 5 번 실행 한 다음 n = 200 등의 경우 동일한 작업을 수행합니다.의사 코드를 C++로 변환
이미 삽입 정렬을 작성 했으므로 작동합니다. 나는 그것을 포함시키지 않았다. 이 가상 코드를 내가 작업 할 수있는 것으로 번역하는 데 정말로 문제가 있습니다. 내 시도와 의사 코드를 포함시켜 비교할 수 있습니다.
의사 코드 :
main()
//generate elements using rand()
for i=1 to 5
for j=1 to 1000
A[i,j] = rand()
//insertion sort
for (i=1; i<=5; i=i+1)
for (n=100; n<=1000; n=n+100)
B[1..n] = A[i,n]
t1 = time()
insertionSort(B,n)
t2 = time()
t_insort[i,n] = t2-t1
//compute the avg time
for (n=100; n<=1000; n=n+100)
avgt_insort[n] = (t_insort[1,n]+t_insort[2,n]+t_insort[3,n]+...+t_insort[5,n]+)/5
//plot graph with avgt_insort
이 내 시도 :
내가 t_insort와 avgt_insort와 혼란 스러워요, 내가 그들을 C로 작성하지 않은 ++. 나는 이것을 새로운 배열로 만들 수 있습니까? 또한 나는 나의 시간을 올바르게하고 있는지 확신 할 수 없다. 나는이 코드를 사용하여 새로운 코드를 작성한 적이 없다.
#include <iostream>
#include <stdlib.h>
#include <time.h>
int main()
{
int A[100];
for(int i=1; i<=5; i++)
{
for(int j=1; j<=1000; j++)
{
A[i,j] = rand();
}
}
for(int i=0;i<=5; i++)
{
for(int n=100; n<=1000; n=n+100)
{
static int *B = new int[n];
B[n] = A[i,n];
cout << "\nLength\t: " << n << '\n';
long int t1 = clock();
insertionSort(B, n);
long int t2 = clock();
//t_insort
cout << "Insertion Sort\t: " << (t2 - t1) << " ms.\n";
}
}
for(int n=100; n<=1000; n=n+100)
{
//avt_insort[n]
}
return 0;
}
그래서 함수로 time()을 정의해야합니까? 시계()가 작동하지 않는 이유는 무엇입니까? –
자신 만의 함수를 정의 할 필요가 없으며 시계 또는 다른 것도 사용할 수 있지만 먼저 함수 선언과 함께 적절한 헤더 파일을 포함해야합니다. –
방금 (거의) 작업 프로그램으로 만들었습니다. 오류가 발생했습니다. 변수 'B'주위의 스택이 손상되었음을 알려줍니다. –