STDIO
Tìm kiếm gần đây
    • Nội dung
    • QR Code
    • 0
    • 0
    • Sao chép

    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
    Xáo Trộn Một Mảng Cho Trướ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;
    }
    
    0 Bình luận
    Modern C++

    Modern C++

    STDIO Training - Đào Tạo Lập Trình C++.

    Đề xuất

      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.
      STDIO

      Trang chính

      Công ty TNHH STDIO

      30, Trịnh Đình Thảo, Hòa Thạnh, Tân Phú, Hồ Chí Minh
      +84 28.36205514 - +84 942.111912
      developer@stdio.vn

      383/1 Quang Trung, Phường 10, Quận Gò Vấp, Hồ Chí Minh
      Số giấy phép ĐKKD: 0311563559 do sở Kế hoạch và Đầu Tư TPHCM cấp ngày 23/02/2012

      Đã thông báo Bộ Công Thương
      ©STDIO, 2013 - 2020