select.c

来自「适合大型数值计算代码 现在网络上已经找不到了 购买需要20$」· C语言 代码 · 共 46 行

C
46
字号
#define SWAP(a,b) temp=(a);(a)=(b);(b)=temp;float select(unsigned long k, unsigned long n, float arr[]){	unsigned long i,ir,j,l,mid;	float a,temp;	l=1;	ir=n;	for (;;) {		if (ir <= l+1) {			if (ir == l+1 && arr[ir] < arr[l]) {				SWAP(arr[l],arr[ir])			}			return arr[k];		} else {			mid=(l+ir) >> 1;			SWAP(arr[mid],arr[l+1])			if (arr[l] > arr[ir]) {				SWAP(arr[l],arr[ir])			}			if (arr[l+1] > arr[ir]) {				SWAP(arr[l+1],arr[ir])			}			if (arr[l] > arr[l+1]) {				SWAP(arr[l],arr[l+1])			}			i=l+1;			j=ir;			a=arr[l+1];			for (;;) {				do i++; while (arr[i] < a);				do j--; while (arr[j] > a);				if (j < i) break;				SWAP(arr[i],arr[j])			}			arr[l+1]=arr[j];			arr[j]=a;			if (j >= k) ir=j-1;			if (j <= k) l=i;		}	}}#undef SWAP

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?