谁能改下这个程序
把这个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;
}
[解决办法]
#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;}