程序应使用冒泡排序对复数数组进行排序。每个复数都定义为一个结构。我有一个计算复数模量并返回它(双精度型)的函数,基于此,我应该将数字按升序排列。
我以为我在气泡排序算法上犯了一个错误,但是我注意到程序只是忽略了“ bubblesort_f”调用,并在不排序的情况下打印了数组。
void bubblesort_f(array vect, const int nelem){
complex tmp; //complex is the struct identifier
for(int j=0; j<(nelem-1); j++){
for(int i=0; i<(nelem-1-j); i++){
double m, n;
m=modulus_f(vect[i]);
n=modulus_f(vect[i+1]);
if (m>n){
tmp=vect[i];
vect[i]=vect[i+1];
vect[i+1]=tmp;
}
}
}
// while in int main() I have:
array v;
readarray_f(v, n); //function that allows to input array elements
bubblesort_f(v, n);
printarray_f(v, n); // function printing the array
// and outside of int main() I have:
#define MAXN 100
typedef struct{
double re;
double im;
} complex;
typedef complex array[MAXN];