法1 暴力:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
printf("请输入数组内要存放的数字个数:\n");
int number;
scanf("%d",&number);
int array[number-1];
int begintime,endtime;
int count_turn = 0;
srand(time(NULL));
printf("以下随机数自动产生:\n");
for(int i = 0; i < number; i++){
array[i] = 0 + rand()%number;
printf("%d\t",array[i]);
}
begintime=clock();
//冒泡排序
for(int i = 0; i < number-1; i++){
for(int j = i+1; j < number; j++){
if(array[i]>array[j]){
int temp = 0;
temp = array[i];
array[i] = array[j];
array[j] = temp;
++count_turn;
}
}
}
int temp = 0 ,min = 100;
for(int i = 0; i < number;i ++){
temp = array[i+1]-array[i];
++count_turn;
if(temp<min){
min = temp;
}
}
endtime = clock();
printf("\n最小差值为:%d",min);
printf("\n\nRunning Time:%dms\n", endtime-begintime);
printf("\ncount_turn:%d",count_turn);
return 0;
}
法2:排序 代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
//输入
printf("数组元素个数:\n");
int sum = 0;
scanf("%d",&sum);
int array[sum-1];
int begintime,endtime;
int count_turn = 0;
srand(time(NULL));
printf("以下随机数自动产生:\n");
for(int i = 0; i < sum; i++){
array[i] = 0 + rand()%sum;
printf("%d\t",array[i]);
}
begintime=clock();
//暴力:两两之差的绝对值
int min = 100, temp = 0;
for(int i = 0; i < sum-1; i++){
for(int j = i+1; j < sum; j++){
++count_turn;
temp = array[i] - array[j];
if(temp < 0 ){
temp = -temp;
}
if(temp < min){
min = temp;
}
}
}
endtime = clock();
printf("\n%d", min);
printf("\n\nRunning Time:%dms\n", endtime-begintime);
printf("\ncount_turn:%d",count_turn);
return 0;
}