Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Chương trình C sắp xếp hai nửa mảng: nửa đầu tăng, nửa sau giảm

Nhập mảng 1 chiều N phần tử. Chia làm 2 nửa: nửa đầu (0 đến N/2-1) sắp tăng dần, nửa sau (N/2 đến N-1) sắp giảm dần.

Giải thuật

  • b = n/2
  • Sắp nửa đầu tăng: i=0..b-1, j=i+1..b-1, hoán đổi nếu a[i] > a[j]
  • Sắp nửa sau giảm: i=b..n-1, j=i+1..n-1, hoán đổi nếu a[i] < a[j]
  • In 2 nửa riêng biệt

Chương trình

#include <stdio.h>
void main() {
    int i, j, a, n, b, number[30];
    printf("N: "); scanf("%d", &n); b = n/2;
    printf("Numbers: "); for(i=0;i<n;i++) scanf("%d",&number[i]);
    // Sort first half ascending
    for(i=0;i<b;i++) for(j=i+1;j<b;j++) if(number[i]>number[j]) { a=number[i]; number[i]=number[j]; number[j]=a; }
    // Sort second half descending
    for(i=b;i<n;i++) for(j=i+1;j<n;j++) if(number[i]

Kết quả

N=10: 20 34 23 11 45 56 78 98 76 54
1st half asc: 11 20 23 34 45
2nd half desc: 98 78 76 56 54