读书人

哪位高手能改上这个程序

发布时间: 2012-11-07 09:56:10 作者: rapoo

谁能改下这个程序
把这个LINUX下的程序改成windows下VC++6.0的
#include <stdlib.h>
#include <stdio.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>

#define TIMEDIFF(s, e) ((e.tv_sec-s.tv_sec)*1000000 + e.tv_usec - s.tv_usec)
int gen_numbers(int arr[], int len) {
for (int i = 0; i < len; ++i) {
arr[i] = rand();
}
return 0;
}


int buble_sort(int arr[], int len) {
bool change=true;
for(int i=0; i < len - 1 && change; i++)
{
change=false;
for(int j = 0; j < len - i - 1; j++)
if(arr[j] > arr[j+1])
{
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
change = true;
}
}

}

int temp[20];
void Merge(int number[], int start, int middle, int last)
{
// int *temp = (int*)malloc((last - start) * sizeof(int));
int start2 = middle + 1, k = 0;
while ((start <= middle) && (start2 <= last))
{
if (number[start] < number[start2])
{
temp[k] = number[start];
start++;
}
else
{
temp[k] = number[start2];
start2++;
}
k++;
}
while (start < middle)
temp[k++] = number[start++];
while (start2 < last)
temp[k++] = number[start2++];
for (int i = 0; i < (last - start); i++)
number[start + i] = temp[i];
// free(temp);
}

void MergeSort(int number[], int first, int last)
{
int middle;
if (first < last)
{
middle = (first + last) / 2;
MergeSort(number, first, middle);
MergeSort(number, middle + 1, last);
Merge(number, first, middle, last);
}
}

int main() {
int array[20];
struct timeval tv, tv1;

gettimeofday(&tv, 0);
for (int i = 0; i < 10000; ++i) {
gen_numbers(array, 20);
buble_sort(array, 20);
}
gettimeofday(&tv1, 0);
printf("time diff:[%ld]\n", TIMEDIFF(tv, tv1) / 1000);


gettimeofday(&tv, 0);
for (int i = 0; i < 10000; ++i) {
gen_numbers(array, 20);
MergeSort(array, 0, 20);
}
gettimeofday(&tv1, 0);
printf("time diff:[%ld]\n", TIMEDIFF(tv, tv1) / 1000);


return 0;
}

[解决办法]

C/C++ code
#include <stdlib.h>#include <stdio.h>#include <windows.h>int gen_numbers(int arr[], int len) {  for (int i = 0; i < len; ++i) {  arr[i] = rand();  }  return 0;}void buble_sort(int arr[], int len) {  bool change=true;  for(int i=0; i < len - 1 && change; i++)  {  change=false;  for(int j = 0; j < len - i - 1; j++)  if(arr[j] > arr[j+1])  {  int temp = arr[j];  arr[j] = arr[j+1];  arr[j+1] = temp;  change = true;  }  }}int temp[20];void Merge(int number[], int start, int middle, int last){// int *temp = (int*)malloc((last - start) * sizeof(int));  int start2 = middle + 1, k = 0;  while ((start <= middle) && (start2 <= last))  {  if (number[start] < number[start2])  {  temp[k] = number[start];  start++;  }  else  {  temp[k] = number[start2];  start2++;  }  k++;  }  while (start < middle)  temp[k++] = number[start++];  while (start2 < last)  temp[k++] = number[start2++];  for (int i = 0; i < (last - start); i++)  number[start + i] = temp[i];  // free(temp);}void MergeSort(int number[], int first, int last){  int middle;  if (first < last)  {  middle = (first + last) / 2;  MergeSort(number, first, middle);  MergeSort(number, middle + 1, last);  Merge(number, first, middle, last);  }}int main() {  int array[20];  int s, t; struct timeval tv, tv1; s = GetTickCount(); for (int i = 0; i < 10000; ++i) {  gen_numbers(array, 20);  buble_sort(array, 20); } printf("time diff:[%ld]\n", GetTickCount() - s);     s = GetTickCount(); for (i = 0; i < 10000; ++i) {  gen_numbers(array, 20);  MergeSort(array, 0, 20); } printf("time diff:[%ld]\n",  GetTickCount() - s); return 0;} 

读书人网 >C++

热点推荐