我假设你的一维数组是double型的,为double a[n];
步骤:
1.定义两个子函数,分别求数组中的最大值及最小值
double myMax(double* input,int n_Ele,int ini_idx,int* index)
double myMin(double* input, int n_Ele,int ini_idx,int* index)
实现如下:
double myMax(double* input, int n_Ele,int ini_idx,int* index){
double mx = input[0];
*index = 0;
for(int i=1;i<n_Ele,i++){
if mx<=input[i]
{
mx = input[i];
*index = i;
}
}
*index = *index + ini_idx;
return mx;
}
double myMin(double* input, int n_Ele,int ini_idx,int* index){
double mn = input[0];
*index = 0;
for(int i=1;i<n_Ele,i++){
if mn>=input[i]
{
mn = input[i];
*index = i;
}
}
*index = *index + ini_idx;
return mn;
}
2. main函数部分,假设数组长度为n,则
double tmp_mx(0),tmp_mn(0),tmp(0);
int count = n;
int idx_mx(0),idx_mn(0);
for(int i=0,i<(int)n/2;i++,count -= 2){
tmp_mx = myMax(&input[i],i,&idx_mx,count);
tmp_mn = myMin(&input[i],i,&idx_mn,count);
// 交换数据
tmp = a[i];
a[i] = tmp_mx;
a[idx_mx] = tmp;
tmp = a[n-i];
a[n-i] = tmp_mn;
a[idx_mn] = tmp;
}
for循环终止,排序完成,你按照上述方法试试看。
温馨提示:答案为网友推荐,仅供参考