Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Write the Assembly language program. Shuffle an Array.. Create a sequentially nu

ID: 3821364 • Letter: W

Question

Write the Assembly language program. Shuffle an Array.. Create a sequentially numbered array of 50 intigers. The use the Random_range procedure to shuffle the array in a random order. ( Each number will only appear once in the array). Display the shuffleed array. Thank you Write the Assembly language program. Shuffle an Array.. Create a sequentially numbered array of 50 intigers. The use the Random_range procedure to shuffle the array in a random order. ( Each number will only appear once in the array). Display the shuffleed array. Thank you

Explanation / Answer

Let the given array be arr[]. A simple solution is to create an auxiliary array temp[] which is initially a copy of arr[]. Randomly select an element from temp[], copy the randomly selected element to arr[0] and remove the selected element from temp[]. Repeat the same process n times and keep copying elements to arr[1], arr[2], … . The time complexity of this solution will be O(n^2).

Fisher-yates shuffle algorithm works orks in O(n) time complexity. The assumption here is, we are given a function rand() that generates random number in O(1) time.
The idea is to start from the last element, swap it with a randomly selected element from the whole array (including last). Now consider the array from 0 to n-2 (size reduced by 1), and repeat the process till we hit the first element.

// C Program to shuffle a given array

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

// A utility function to swap to integers
void swap (int *a, int *b)
{
   int temp = *a;
   *a = *b;
   *b = temp;
}

// A utility function to print an array
void printArray (int arr[], int n)
{
   for (int i = 0; i < n; i++)
       printf("%d ", arr[i]);
   printf(" ");
}

// A function to generate a random permutation of arr[]
void randomize ( int arr[], int n )
{
   // Use a different seed value so that we don't get same
   // result each time we run this program
   srand ( time(NULL) );

   // Start from the last element and swap one by one. We don't
   // need to run for the first element that's why i > 0
   for (int i = n-1; i > 0; i--)
   {
       // Pick a random index from 0 to i
       int j = rand() % (i+1);

       // Swap arr[i] with the element at random index
       swap(&arr[i], &arr[j]);
   }
}

// Driver program to test above function.
int main()
{
   int arr[] = {1, 2, 3, 4, 5, 6, 7, 8};
   int n = sizeof(arr)/ sizeof(arr[0]);
   randomize (arr, n);
   printArray(arr, n);

   return 0;
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at drjack9650@gmail.com
Chat Now And Get Quote