Xáo Trộn Một Mảng Cho Trước
Hướng dẫn xây dựng thuật toán xáo trộn mảng dành cho C/C++
15/01/2018 15/09/2020 1 phút đọc

Ý tưởng xáo trộn mảng
Sử dụng một tính chất của mảng là: chỉ số của các phần tử trong mảng không được trùng nhau. Do đó phương pháp này sẽ tiến hành theo 2 bước như sau:
- Bước 1: Tạo một mảng số cho trước.
- Bước 2: Duyệt lại mảng trên, tại phần tử ở vị trí thứ i bất kì, hoán đổi giá trị của phần tử ở vị trí thứ i ấy với giá trị của một phần tử ở vị trí thứ j, với j là một vị trí ngẫu nhiên mà vị trí ấy là kết quả của phép chọn ngẫu nhiên giá trị trong khoảng từ i + 1 tới n (n là số lượng phần tử của mảng).
Code xáo trộn mảng bằng C/C++
#include <stdio.h> #include <stdlib.h> #include <time.h> void Swap(int* number_1, int* number_2) { int temp = *number_1; *number_1 = *number_2; *number_2 = temp; } void ShuffleArray(int* arr, int n) { srand(time(NULL)); int minPosition; int maxPosition = n - 1; int swapPosition; int i = 0; while (i < n - 1) { minPosition = i + 1; swapPosition = rand() % (maxPosition - minPosition + 1) + minPosition; Swap(&arr[i], &arr[swapPosition]); i++; } } int main() { int arr[5] = { 1, 2, 3, 4, 5 }; int size = 5; ShuffleArray(arr, size); for (int i = 0; i < size; i++) { printf("%d ", arr[i]); } return 0; }
Modern C++
STDIO Training - Đào Tạo Lập Trình C++.
Khi bạn nhấn vào sản phẩm do chúng tôi đề xuất và mua hàng, chúng tôi sẽ nhận được hoa hồng. Điều này hỗ trợ chúng tôi có thêm kinh phí tạo nhiều nội dung hữu ích. Tìm hiểu thêm.