4 条题解

  • 3
    @ 2023-2-11 12:16:47
    • 1不是素数
    • 合数保持原来顺序
    #include <stdio.h>
    #include <math.h>
    #define N 1010
    
    typedef struct {
    	int num, data;
    } node;
    
    int n;
    node a[N];
    
    int isPrime(int x) {
    	if(x == 1) return 0; 
    	for(int i = 2; i < sqrt(x) + 0.05; i++) {
    		if(x % i == 0) return 0;
    	}
    	return 1;
    }
    
    void swap(node *x, node *y) {
    	node temp = *x;
    	*x = *y;
    	*y = temp;
    }
    
    void SelectSort(node *x, int l, int r) {
    	for(int i = l; i < r; i++) {
    		int m = i;
    		for(int j = i + 1; j <= r; j++) {
    			if(isPrime(x[m].data)) {
    				if(isPrime(x[j].data) && x[j].data < x[m].data) m = j;
    			}
    			else {
    				if(isPrime(x[j].data)) m = j;
    				else if(x[j].num < x[m].num) m = j;
    			}
    		}
    		swap(&x[i], &x[m]);
    	}
    }
    
    int main()
    {
    	scanf("%d", &n);
    	for(int i = 1; i <= n; i++) {
    		scanf("%d", &a[i].data);
    		a[i].num = i;
    	}
    	SelectSort(a, 1, n);
    	for(int i = 1; i <= n; i++) {
    		printf("%d ", a[i].data);
    	}
    	return 0;
    }
    

    信息

    ID
    809
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    1022
    已通过
    266
    上传者