该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
#define MAX_DATA_LEN 100
#define RANGE_DATA (int)(32767)
static int original_arr[MAX_DATA_LEN]={0};
int sec_arr[MAX_DATA_LEN+1];
int minData_arr[2];
static int first=0;
static int temp=0;
enum {
ERR_DAT=-1,
OK_DAT=1
};
int min_search(int *i){
int j,k,*pi=i;
if( *pi<0 || pi==NULL || (first != 0 && first != 1))
return ERR_DAT;
if(*pi==0){
if(first==0){
for(k=0;k
sec_arr[k]=original_arr[k];
}
}
else{
for(j=0;j
{
if(original_arr[j]!=minData_arr[0])
sec_arr[temp++]=original_arr[j];
}
}
minData_arr[first]=sec_arr[0];
}
if(minData_arr[first]>sec_arr[(*pi)++])
{
minData_arr[first]=sec_arr[(*pi)-1];
}
if((first==1)){
if(*pi==(temp-1))
{
first=0;
temp=0;
return OK_DAT;
}
}
if((first==0)&&(*pi==(MAX_DATA_LEN))){
first = 1;
*pi = 0;
}
return min_search(pi);
}
void data_arr_get(void){
int v,num=0;
srand((unsigned)time(NULL));
printf("original_arr[%4d]=\n{\n",MAX_DATA_LEN);
for(v=0;v
{
original_arr[v]=rand()%RANGE_DATA;//4*MAX_DATA_LEN
printf("%4d, ",original_arr[v]);
if(!((v+1)%20))
printf("\n");
}
printf("}\n");
}
int main(){
int v,num=0;
data_arr_get();
sec_arr[MAX_DATA_LEN]=0;
printf("Start \n");
if(min_search(&num)==OK_DAT){
printf("Search success,result:");
for(v=0;v<2;v++)
printf("%d ",minData_arr[v]);
}
else
printf("Search Fail!!");
printf("\n");
printf("Stop \n");
system("pause");
return 0;
}