首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

哪位高手能改上这个程序

2012-11-07 
谁能改下这个程序把这个LINUX下的程序改成windows下VC++6.0的#include stdlib.h#include stdio.h#incl

谁能改下这个程序
把这个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;} 

热点排行