程序代码:找出数组的第k小。找第k大也类似。
void search_c(int a[],int k) { int low,high,i,j,m,t; k--; low=0; high=n-1; do{ i=low;j=high;t=a[low]; do{ while(i<j&&t<a[j])j--; if(i<j)a[i++]=a[j]; while(i<j&&t>=a[i])i++; if(i<j)a[j--]=a[i]; }while(i<j); a[i]=t; if(i==k) break; if(i<k) low=i+1; else high=i-1; }while(low<high); printf("%d ",a[low]); }