写个中值滤波器,取中,用类似快排的分割算法 int kValue(int *m,int len,int k) { int i=0; int j=len-1; int p=m[0]; for(int s=0;s<len;s++) { printf("%d ",m[s]); } printf("/n"); while(j>i) { if (m[j]<=p) { int temp=m[j]; m[j]=m[i]; m[i]=temp; i++; while(m[i]<=p && i<j) { i++; } temp=m[j]; m[j]=m[i]; m[i]=temp; j--; continue; } j--; } m[i]=p; for(int s=0;s<len;s++) { printf("%d ",m[s]); } printf("/n"); if (i==k) { return m[k]; } else if (i>=k) { return kValue(m, i, k); } else { return kValue(m+i+1, len-i-1, k-i-1); } }