7-38 寻找大富翁 (25 分)

注意:N有可能比M小
思路:使用选择排序或者冒泡排序,遍历M趟,一边遍历,一边输出。

#include
using namespace std;
const int maxn=1e6+5;
int arr[maxn];
int main(){
	int n,m;
	scanf("%d%d",&n,&m);
	for(int i=0;i<n;i++){
		scanf("%d",arr+i);
	}
	int Mi;
	int shr=min(m,n);
	for(int i=0;i<shr;i++){
		Mi=i;
		for(int j=i+1;j<n;j++){
			if(arr[Mi]<arr[j]){
				Mi=j;
			}
		}
		if(i!=shr-1) printf("%d ",arr[Mi]);
		else printf("%d\n",arr[Mi]);
		arr[i]^=arr[Mi];
		arr[Mi]^=arr[i];
		arr[i]^=arr[Mi];
	}
	return 0;
}

你可能感兴趣的:(数据结构与算法题目集)