#include<stdio.h>structthree{intw,v;//重量,价格doublep;//性价比}A[1000];intPartition(intlow,inthigh,threeA[],intthree::*whichmen){inti=low,j=high,t=0;while(i<j&&A[j].*wh... #include<stdio.h>struct three{ int w,v;//重量,价格 double p;//性价比 }A[1000];int Partition(int low,int high,three A[],int three::*whichmen){ int i=low,j=high,t=0; while(i<j&&A[j].*whichmen>A[low].*whichmen) j--; while(i<j&&A[i].*whichmen<A[low].*whichmen) i++; if(i<j){ t=A[j].*whichmen;A[j].*whichmen=A[i].*whichmen;A[i].*whichmen=t; i++;j--; } if(A[i].*whichmen>A[low].*whichmen){ t=A[low].*whichmen;A[low].*whichmen=A[i-1].*whichmen;A[i-1].*whichmen=t; return i-1; } else{ t=A[low].*whichmen;A[low].*whichmen=A[i].*whichmen;A[i].*whichmen=t; return i; }}void QuickSort(int low,int high,int A[],int three::*whichmen){ int mid; while(low<high){ mid=Partition(low,high,A,&three::whichmen); QuickSort(low,mid-1,A,&three::whichmen); QuickSort(mid+1,high,A,&three::whichmen); }}int main(){ int i; for(i=0;i<5;i++){ scanf("%d",&A[i].w); } QuickSort(0,4,A,&three::w); for(i=0;i<5;i++){ printf("%d",A[i].w); } return 0;}图示的地方有错误,但是本人能力有限无法解决,恳请大佬们的帮助。 展开