SIMPLE
STRING
ARRAY
SORTING
POINTER
CALCULATION
NUMBER
OTHER
C
BÀI TẬP C
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Sắp xếp một mảng số nguyên sao trong C

Trong lập trình, việc sắp xếp một mảng là một công việc phổ biến và quan trọng. Đôi khi, yêu cầu sắp xếp không chỉ đơn giản là sắp xếp tăng dần hoặc giảm dần, mà còn theo một điều kiện cụ thể. Trong bài tập này, freetuts.net sẽ giúp bạn tìm hiểu cách sắp xếp một mảng số nguyên sao cho các số nguyên tố nằm trước các số không phải là số nguyên tố.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Chương trình sắp xếp một mảng số nguyên trong C

Cách giải quyết:

Để giải quyết bài toán này, chúng ta sẽ thực hiện các bước sau:

  • Viết một hàm để kiểm tra xem một số có phải là số nguyên tố không.
  • Sử dụng một thuật toán sắp xếp như bubble sort hoặc selection sort để sắp xếp mảng, và trong quá trình sắp xếp, chúng ta sẽ hoán đổi các số sao cho các số nguyên tố nằm trước các số không phải là số nguyên tố.

Hãy xem cách giải bài lập trình sau

Bài viết này được đăng tại [free tuts .net]

File: sort_prime_first.c

#include <stdio.h>

// Hàm kiểm tra số nguyên tố
int isPrime(int n) {
    if (n <= 1) 
        return 0; // Không phải số nguyên tố
    for (int i = 2; i * i <= n; i++) {
        if (n % i == 0) 
            return 0; // Không phải số nguyên tố
    }
    return 1; // Là số nguyên tố
}

// Hàm hoán đổi giá trị của hai số
void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

// Hàm sắp xếp mảng sao cho số nguyên tố nằm trước số không phải số nguyên tố
void sortPrimeFirst(int arr[], int n) {
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            // Nếu arr[j] không phải số nguyên tố và arr[j+1] là số nguyên tố, hoán đổi vị trí
            if (!isPrime(arr[j]) && isPrime(arr[j + 1])) {
                swap(&arr[j], &arr[j + 1]);
            }
        }
    }
}

// Hàm in mảng ra màn hình freetuts.net
void printArray(int arr[], int n) {
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

int main() {
    int arr[] = {7, 4, 9, 12, 11, 16, 5};
    int n = sizeof(arr) / sizeof(arr[0]);

    printf("Mang truoc khi sap xep: ");
    printArray(arr, n);

    // Sắp xếp mảng
    sortPrimeFirst(arr, n);

    printf("Mang sau khi sap xep: ");
    printArray(arr, n);

    return 0;
}

Kết quả:

z5270253000984 d1466103e84ff2181849d3ef9cdd635e jpg

Giải thích :

  • Trong code trên, mình đã sử dụng một hàm isPrime để kiểm tra xem một số có phải là số nguyên tố hay không.
  • Sau đó, mình sử dụng một thuật toán sắp xếp cơ bản (ở đây là bubble sort) để sắp xếp mảng sao cho các số nguyên tố nằm trước các số không phải số nguyên tố.
  • Kết quả cuối cùng là mảng đã được sắp xếp sao cho các số nguyên tố (7, 11, 5) nằm trước các số không phải số nguyên tố (4, 9, 12, 16).

Việc này giúp mình sắp xếp mảng theo yêu cầu một cách hiệu quả trong ngôn ngữ lập trình C.

Cùng chuyên mục:

Các hàm xử lý ngày tháng (datetime.h) trong C/C++

Các hàm xử lý ngày tháng (datetime.h) trong C/C++

Các hàm xử lý số thực (float.h) trong C/C++

Các hàm xử lý số thực (float.h) trong C/C++

Các hàm xử lý số nguyên lớn (bigint.h) trong C/C++

Các hàm xử lý số nguyên lớn (bigint.h) trong C/C++

Các hàm xử lý thời gian (time.h) trong C

Các hàm xử lý thời gian (time.h) trong C

Các hàm xử lý chuỗi (string.h) trong C/C++

Các hàm xử lý chuỗi (string.h) trong C/C++

Thread Pools và Parallel Algorithms trong C++

Thread Pools và Parallel Algorithms trong C++

Tạo và quản lý các Multithreading trong C++

Tạo và quản lý các Multithreading trong C++

Xử lý ngoại lệ khi làm việc với Memory Allocation trong C++

Xử lý ngoại lệ khi làm việc với Memory Allocation trong C++

Try, Catch, và Throw của Exception Handling trong C++

Try, Catch, và Throw của Exception Handling trong C++

Cách sử dụng Lambda Expressions trong C++

Cách sử dụng Lambda Expressions trong C++

Sử dụng weak_ptr trong C++

Sử dụng weak_ptr trong C++

Sử dụng shared_ptr trong C++

Sử dụng shared_ptr trong C++

Sử dụng unique_ptr trong C++

Sử dụng unique_ptr trong C++

Tổng quan về Smart Pointers trong C++

Tổng quan về Smart Pointers trong C++

Sử dụng Iterators trong STL của C++

Sử dụng Iterators trong STL của C++

[Iterator] Sử dụng Vector trong C++

[Iterator] Sử dụng Vector trong C++

[Iterator] Sử dụng trong List trong C++

[Iterator] Sử dụng trong List trong C++

[STL] Sử dụng Vector trong C++

[STL] Sử dụng Vector trong C++

Tổng quan về Iterators trong C++

Tổng quan về Iterators trong C++

[STL] Các hàm thường dùng của lớp Vector trong C++

[STL] Các hàm thường dùng của lớp Vector trong C++

Top