我有一个带有5种排序算法的程序(冒泡排序,选择排序等),要求用户选择他想要使用的算法,然后要求用户写出他想要排序的数量,这些数字是随机生成的,我的问题是如何打印每个案例完成的时间?
提前致谢
以下代码:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include<string>
#include <ctime>
#include <cstdlib>
using namespace std;
void merge(int[],int,int[],int,int[]);
void bubblemethod(int*,int);
void insertionmethod(int[],int);
void merge_sort(int[],int,int);
void mergemethod(int[],int,int,int);
void selectionmethod(int[],int,int);
int populateArray();
int size;
int*array;
int main(int argc, char** argv) {
int menuOption;
//int c2, n2;
// printf("Ten random numbers in [1,100]\n");
//for (c2 = 1; c2 <= 10; c2++)
//{
// n2 = rand()%100 + 1;
// printf("%d\n", n2);
//}
do
{
cout << endl << endl << "Select an option from the MENU:" << endl ;
cout << "1. Bubble Sort" << endl ;
cout << "2. Insertion Sort" << endl ;
cout << "3. Merge Sort" << endl ;
cout << "4. Selection Sort" << endl ;
cout << "5. Quick Sort" << endl ;
cout << "6. Exit the Program" << endl ;
cin >> menuOption ;
switch (menuOption)
{
case 1:
size=populateArray();
bubblemethod(array,size);
break;
case 2:
size=populateArray();
insertionmethod(array,size);
break;
/*
case 3:
cout << endl << "Enter the size of the list with integers:" << endl ;
cin >> size;
randomnum=size;
cout<< endl <<"The random numbers in this size are:" << endl;
for (c1 = 1; c1 <= size; c1++)
{
n1 = rand()%size + 1;
printf("%d\n", n1);
array[c1-1]=n1;
}
merge_sort(array,c1,randomnum);
cout<<"So, the sorted list (using MERGE SORT) will be :"<<endl;
cout<<endl<<endl;
for(c1=1;c1<=randomnum;c1++)
cout<<array[c1-1]<<" ";
break;
case 4:
cout << endl << "Enter the size of the list with integers:" << endl ;
cin>> size;
randomnum=size;
cout<< endl <<"The random numbers in this size are:" << endl;
for (c1 = 1; c1 <= randomnum; c1++)
{
n1 = rand()%size + 1;
printf("%d\n", n1);
array[c1-1]=n1;
}
selectionmethod(array,c1,randomnum);
break;
case 5:
break;
case 6:
cout << endl << "End the program" << endl ;
break;
*/
default:
cout << endl << "Error in menu input. Valid menu options are 1 to 6." << endl ;
}// end switch
} while (menuOption !=6); // end do-while
}
void bubblemethod(int array[],int size)
{
int d,swap,c1;
for (c1 = 0 ; c1 <size; c1++)
{
for (d = 0 ; d < size - 1; d++)
{
if (array[d] > array[d+1]) /* For decreasing order use < */
{
swap = array[d];
array[d] = array[d+1];
array[d+1] = swap;
}
}
}
cout<< endl << "Sorted list:\n" << endl;
for ( c1 = 0 ; c1 <size; c1++ )
printf("%d\n", array[c1]);
}
void insertionmethod(int array[],int size)
{
int d,t,c1;
for (c1 = 1 ; c1 <= size - 1; c1++)
{
d = c1;
while ( d > 0 && array[d] < array[d-1])
{
t = array[d];
array[d] = array[d-1];
array[d-1] = t;
d--;
}
}
printf("Sorted list:\n");
for (c1 = 0; c1 <= size - 1; c1++)
printf("%d\n", array[c1]);
}
void merge_sort(int array[],int c1,int size)
{
int mid;
if(c1<size)
{
mid=(c1+size)/2;
merge_sort(array,c1,mid);
merge_sort(array,mid+1,size);
mergemethod(array,c1,mid,size);
}
}
void mergemethod(int array[],int c1,int mid,int randomnum)
{
int h,i,j,b[50],k;
h=c1;
i=c1;
j=mid+1;
while((h<=mid)&&(j<=randomnum))
{
if(array[h]<=array[j])
{
b[i]=array[h];
h++;
}
else
{
b[i]=array[j];
j++;
}
i++;
}
if(h>mid)
{
for(k=j;k<=randomnum;k++)
{
b[i]=array[k];
i++;
}
}
else
{
for(k=h;k<=mid;k++)
{
b[i]=array[k];
i++;
}
}
for(k=c1;k<=randomnum;k++)
array[k]=b[k];
}
void selectionmethod(int array[],int c1,int randomnum)
{
int position,d,swap;
for ( c1 = 0 ; c1 < ( randomnum - 1 ) ; c1++ )
{
position = c1;
for ( d = c1 + 1 ; d < randomnum ; d++ )
{
if ( array[position] > array[d] )
position = d;
}
if ( position != c1 )
{
swap = array[c1];
array[c1] = array[position];
array[position] = swap;
}
}
printf("Sorted list:\n");
for ( c1 = 0 ; c1 < randomnum ; c1++ )
printf("%d\n", array[c1]);
}
int populateArray()
{
int size;
cout << endl << "Enter the size of the list with integers:" << endl ;
cin >> size;
int randomnum, c1, n1;
randomnum=size;
array=new int[size];
cout<< endl <<"The random numbers in this size are:" << endl;
for (c1 = 1; c1 <= size; c1++)
{
n1 = rand()%size + 1;
printf("%d\n", n1);
array[c1-1]=n1;
}
return size;
}
答案 0 :(得分:1)
#include<time.h>
#include<iostream.h>
int main(){
time_t t = clock();
//Code goes here
t = clock() - t;
double time_taken = ((double)t)/CLOCKS_PER_SEC;
cout<<time_taken;
return 0;
}
这应该有所帮助。
答案 1 :(得分:0)
编辑您的代码以秒为单位计算前2个案例的时间:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include<string>
#include <ctime>
#include <cstdlib>
using namespace std;
void merge(int[],int,int[],int,int[]);
void bubblemethod(int*,int);
void insertionmethod(int[],int);
void merge_sort(int[],int,int);
void mergemethod(int[],int,int,int);
void selectionmethod(int[],int,int);
int populateArray();
int size;
int*array;
int main(int argc, char** argv) {
int menuOption;
//int c2, n2;
// printf("Ten random numbers in [1,100]\n");
//for (c2 = 1; c2 <= 10; c2++)
//{
// n2 = rand()%100 + 1;
// printf("%d\n", n2);
//}
do
{
cout << endl << endl << "Select an option from the MENU:" << endl ;
cout << "1. Bubble Sort" << endl ;
cout << "2. Insertion Sort" << endl ;
cout << "3. Merge Sort" << endl ;
cout << "4. Selection Sort" << endl ;
cout << "5. Quick Sort" << endl ;
cout << "6. Exit the Program" << endl ;
cin >> menuOption ;
time_t t1 = 0;
time_t t2 = 0;
switch (menuOption)
{
case 1:
size=populateArray();
t1 = time(0);
bubblemethod(array,size);
t2 = time(0);
break;
case 2:
size=populateArray();
t1 = time(0);
insertionmethod(array,size);
t2 = time(0);
break;
/*
case 3:
cout << endl << "Enter the size of the list with integers:" << endl ;
cin >> size;
randomnum=size;
cout<< endl <<"The random numbers in this size are:" << endl;
for (c1 = 1; c1 <= size; c1++)
{
n1 = rand()%size + 1;
printf("%d\n", n1);
array[c1-1]=n1;
}
merge_sort(array,c1,randomnum);
cout<<"So, the sorted list (using MERGE SORT) will be :"<<endl;
cout<<endl<<endl;
for(c1=1;c1<=randomnum;c1++)
cout<<array[c1-1]<<" ";
break;
case 4:
cout << endl << "Enter the size of the list with integers:" << endl ;
cin>> size;
randomnum=size;
cout<< endl <<"The random numbers in this size are:" << endl;
for (c1 = 1; c1 <= randomnum; c1++)
{
n1 = rand()%size + 1;
printf("%d\n", n1);
array[c1-1]=n1;
}
selectionmethod(array,c1,randomnum);
break;
case 5:
break;
case 6:
cout << endl << "End the program" << endl ;
break;
*/
default:
cout << endl << "Error in menu input. Valid menu options are 1 to 6." << endl ;
}// end switch
cout <<"time taken = "<<t2-t1<<" seconds";
} while (menuOption !=6); // end do-while
}
void bubblemethod(int array[],int size)
{
int d,swap,c1;
for (c1 = 0 ; c1 <size; c1++)
{
for (d = 0 ; d < size - 1; d++)
{
if (array[d] > array[d+1]) /* For decreasing order use < */
{
swap = array[d];
array[d] = array[d+1];
array[d+1] = swap;
}
}
}
cout<< endl << "Sorted list:\n" << endl;
for ( c1 = 0 ; c1 <size; c1++ )
printf("%d\n", array[c1]);
}
void insertionmethod(int array[],int size)
{
int d,t,c1;
for (c1 = 1 ; c1 <= size - 1; c1++)
{
d = c1;
while ( d > 0 && array[d] < array[d-1])
{
t = array[d];
array[d] = array[d-1];
array[d-1] = t;
d--;
}
}
printf("Sorted list:\n");
for (c1 = 0; c1 <= size - 1; c1++)
printf("%d\n", array[c1]);
}
void merge_sort(int array[],int c1,int size)
{
int mid;
if(c1<size)
{
mid=(c1+size)/2;
merge_sort(array,c1,mid);
merge_sort(array,mid+1,size);
mergemethod(array,c1,mid,size);
}
}
void mergemethod(int array[],int c1,int mid,int randomnum)
{
int h,i,j,b[50],k;
h=c1;
i=c1;
j=mid+1;
while((h<=mid)&&(j<=randomnum))
{
if(array[h]<=array[j])
{
b[i]=array[h];
h++;
}
else
{
b[i]=array[j];
j++;
}
i++;
}
if(h>mid)
{
for(k=j;k<=randomnum;k++)
{
b[i]=array[k];
i++;
}
}
else
{
for(k=h;k<=mid;k++)
{
b[i]=array[k];
i++;
}
}
for(k=c1;k<=randomnum;k++)
array[k]=b[k];
}
void selectionmethod(int array[],int c1,int randomnum)
{
int position,d,swap;
for ( c1 = 0 ; c1 < ( randomnum - 1 ) ; c1++ )
{
position = c1;
for ( d = c1 + 1 ; d < randomnum ; d++ )
{
if ( array[position] > array[d] )
position = d;
}
if ( position != c1 )
{
swap = array[c1];
array[c1] = array[position];
array[position] = swap;
}
}
printf("Sorted list:\n");
for ( c1 = 0 ; c1 < randomnum ; c1++ )
printf("%d\n", array[c1]);
}
int populateArray()
{
int size;
cout << endl << "Enter the size of the list with integers:" << endl ;
cin >> size;
int randomnum, c1, n1;
randomnum=size;
array=new int[size];
cout<< endl <<"The random numbers in this size are:" << endl;
for (c1 = 1; c1 <= size; c1++)
{
n1 = rand()%size + 1;
printf("%d\n", n1);
array[c1-1]=n1;
}
return size;
}