马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 比特阿尔法 于 2017-12-9 23:06 编辑
这是题目:
代码是正确的,但是在DEV C++ 和VC++6.0 当中运行,会直接卡住
所以选择了在线编译器验证,两个代码都验证成功了。
(在线编译器链接:http://www.dooccn.com/c/)
甲鱼老师的代码验证:
自己代码的验证:
我就是不能明白为什么代码没有问题,但是在DEV C++ 和VC++6.0 当中运行,会直接卡住一点反应都没有,只有小光标在跳动
而在线编译器可以验证呢??
这是小甲鱼老师的代码:#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int in_order(int array[], int length);
void shuffle(int array[], int length);
void bogo_sort(int array[], int length);
int in_order(int array[], int length)
{
int i = 0;
while (array[i] <= array[i+1] && ++i < length - 1)
;
if (i == length - 1)
{
return 1;
}
else
{
return 0;
}
}
void shuffle(int array[], int length)
{
int index, temp, i;
static int t1, t2;
srand(t1);
t1 = rand();
t2 = time(NULL);
srand(t1+t2);
for (i = 0; i < length; i++)
{
index = rand() % (length - i) + i;
if (index != i)
{
temp = array[i];
array[i] = array[index];
array[index] = temp;
}
}
}
void bogo_sort(int array[], int length)
{
while (!in_order(array, length))
{
shuffle(array, length);
}
}
int main(void)
{
int array[] = {73, 108, 111, 118, 101, 70, 105, 104, 67};
int i, length;
time_t begin, end;
begin = time(NULL);
length = sizeof(array) / sizeof(array[0]);
bogo_sort(array, length);
printf("排序后的结果是:");
for (i = 0; i < length; i++)
{
printf("%d ", array[i]);
}
putchar('\n');
end = time(NULL);
printf("总共耗时:%ld秒\n", end - begin);
return 0;
}
这是参考了甲鱼老师后我自己写的:#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void bogo_sort(int array[], int length);
int main(void)
{
int array[] = {73, 108, 111, 118, 101, 70, 105, 104, 67};
int i, length;
time_t begin, end;
begin = time(NULL);
length = sizeof(array) / sizeof(array[0]);
bogo_sort(array, length);
end = time(NULL);
printf("排序后的结果是:");
for (i = 0; i < length; i++)
{
printf("%d ", array[i]);
}
putchar('\n');
printf("总共耗时:%ld秒\n", end - begin);
return 0;
}
void bogo_sort(int array[], int length)
{
int index,temp,i;
int cnt;
int t1, t2;
do
{
cnt=0;
srand(t1);
t1 = rand();
t2 = time(NULL);
srand(t1+t2);
for(i=0;i<length;i++)
{
index=rand()%(length-i)+i;
if(index!=i)
{
temp=array[i];
array[i]=array[index];
array[index]=temp;
}
}
for(i=0;i<(length-1);i++)
{
if(array[i]<array[i+1])
{
cnt++;
}
}
}while(cnt!=8);
}
本帖最后由 798236606 于 2018-7-21 16:49 编辑
我也是用的dev c++,不是卡住了,而是你没耐心等下去
下图是用小甲鱼老师的代码验证的。
我也不知道为什么,很奇怪。
|