1 voidBiselectsort (intA[],intN)/*Bi- directional sorting function*/2{intI, J, K, Kmax, Kmin, T;3 for(i=0, j=n-1; i<j; ++i,--j)4{kmin=kmax=i;5 for(k=i+1; k<=j; ++K)//a scan to find the maximum and minimum values6{if(A[k]<a[kmin]) kmin=K;7 if(A[k]>a[kmax]) kmax=K;8 }9 //distinguish between four cases, which are handled separately, and are usually not recognized and cause errors .Ten if(Kmin==j && kmax==i)//1. One{t=A[i]; Aa[i]=A[j]; -a[j]=T; - } the //else if (kmin==j && kmax!=i)//2. Omit this situation, which can be handled in the fourth case - //{t=a[i]; - //A[i]=a[kmin]; - //A[kmin]=a[i]; + //T=a[j]; - //A[j]=a[kmax]; + //a[kmax]=t; A // } at Else if(Kmax==i && kmin!=j)//3. -{t=A[j]; -a[j]=A[kmax]; -a[kmax]=T; -t=A[i]; -a[i]=A[kmin]; ina[kmin]=T; - } to Else //4. +{if(kmin!=i) -{t=A[i]; thea[i]=A[kmin]; *a[kmin]=T; $ }Panax Notoginseng if(kmax!=j) -{t=A[j]; thea[j]=A[kmax]; +a[kmax]=T; A } the } + } -}
View Code
Modified bi-directional sorting function