7-1 整數奇偶排序
給定10個整數的序列,要求對其重新排序。
排序要求:
1.奇數在前,偶數在后;
2.奇數按從大到小排序;
3.偶數按從小到大排序。
輸入格式:
輸入一行,包含10個整數,彼此以一個空格分開,每個整數的范圍是大於等於0,小於等於30000。
輸出格式:
請在這里描述輸出格式。例如:對每一組輸入,在一行中輸出A+B的值。
輸入樣例:
按照要求排序后輸出一行,包含排序后的10個整數,數與數之間以一個空格分開。
4 7 3 13 11 12 0 47 34 98
輸出樣例:
在這里給出相應的輸出。例如:
47 13 11 7 3 0 4 12 34 98
思路:
這里分析題目,發現有三種情況下需要進行排序:
1.a[j]為奇數,a[j+1]為偶數
2.a[j]為奇數,a[j+1]為奇數且a[j] < a[j+1]
3.a[j]為偶數,a[j+1]為偶數且a[j] > a[j+1]
代碼:
#include<stdio.h>
int main() { int n = 10,i,j,tmp; int a[10]; for(i = 0; i < n; i++) { scanf("%d",&a[i]); } for(i = 0; i < n-1; i++) { for(j = 0; j < n-1; j++) { if(a[j] % 2 == 0 && a[j+1] % 2 != 0 || a[j] % 2 != 0 && a[j+1] % 2 != 0 && a[j] < a[j+1] || a[j] % 2 == 0 && a[j+1] % 2 ==0 && a[j] > a[j+1]) { tmp = a[j]; a[j] = a[j+1]; a[j+1] = tmp; } } } for(i = 0; i < n; i++) { printf("%d ",a[i]); } return 0; }