Guest User

Untitled

a guest
Jul 17th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.09 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <stdlib.h>
  4. #include <sys/time.h>
  5. #include "mergesort.cpp"
  6. using namespace std;
  7.  
  8. extern void mergesort( vector<int> &a ); // your function prototype
  9. //void initArray( vector<int> &array, int rand_max );
  10. //void printArray( vector<int> &array, char name[] );
  11.  
  12.  
  13.  
  14.  
  15. // array initialization with random numbers
  16. void initArray( vector<int> &array, int randMax ) {
  17. int size = array.size( );
  18.  
  19. for ( int i = 0; i < size; ) {
  20. int tmp = ( randMax == -1 ) ? rand( ) : rand( ) % randMax;
  21. bool hit = false;
  22. for ( int j = 0; j < i; j++ ) {
  23. if ( array[j] == tmp ) {
  24. hit = true;
  25. break;
  26. }
  27. }
  28. if ( hit )
  29. continue;
  30. array[i] = tmp;
  31. i++;
  32. }
  33. }
  34.  
  35. // array printing
  36. void printArray( vector<int> &array, char arrayName[] ) {
  37. int size = array.size( );
  38.  
  39. for ( int i = 0; i < size; i++ )
  40. cout << arrayName << "[" << i << "] = " << array[i] << endl;
  41. }
  42.  
  43. // performance evaluation
  44. int elapsed( timeval &startTime, timeval &endTime ) {
  45. return ( endTime.tv_sec - startTime.tv_sec ) * 1000000
  46. + ( endTime.tv_usec - startTime.tv_usec );
  47. }
  48.  
  49. int main( int argc, char* argv[] ) {
  50. // verify arguments
  51.  
  52. if ( argc != 2 ) {
  53. cerr << "usage: a.out size" << endl;
  54. return -1;
  55. }
  56.  
  57. // verify an array size
  58.  
  59. int size = atoi( argv[1] );
  60. if ( size <= 0 ) {
  61. cerr << "array size must be positive" << endl;
  62. return -1;
  63. }
  64.  
  65. // array generation
  66.  
  67. srand( 1 );
  68. vector<int> items( size );
  69. initArray( items, size );
  70. //cout << "initial:" << endl; // comment out when evaluating performance only
  71. //printArray( items, "items" ); // comment out when evaluating performance only
  72.  
  73. // mergesort
  74. struct timeval startTime, endTime;
  75. gettimeofday( &startTime, 0 );
  76. mergesort( items );
  77. gettimeofday( &endTime, 0 );
  78. cout << "elapsed time: " << elapsed( startTime, endTime ) << endl;
  79.  
  80. // << "sorted:" << endl; // comment out when evaluating performance only
  81. // printArray( items, "items" ); // comment out when evaluating performance only
  82.  
  83. return 0;
  84. }
Add Comment
Please, Sign In to add comment