1answer.
Ask question
Login Signup
Ask question
All categories
  • English
  • Mathematics
  • Social Studies
  • Business
  • History
  • Health
  • Geography
  • Biology
  • Physics
  • Chemistry
  • Computers and Technology
  • Arts
  • World Languages
  • Spanish
  • French
  • German
  • Advanced Placement (AP)
  • SAT
  • Medicine
  • Law
  • Engineering
Mumz [18]
3 years ago
14

Write a program to sort an array of 100,000 random elements using quicksort as follows: Sort the arrays using pivot as the middl

e element of the array Sort the arrays using pivot as the median of the first, last, and middle elements of the array Sort the arrays using pivot as the middle element of the array. However,, when the size of any sub-list reduces to less than 20, sort the sub-list using insertion sort. Sort the array using pivot as the median of the first, last and middle elements of the array. When the size of any sub-list reduces to less than 20, sort the sub-list using insertion sort. Calculate and display the CPU time for each of the preceding four steps. Example of the median of the first, last and middle elements: 1 2 3 4 5 6 7 8 0 (median of 1, 5, 0 is 1) 8 0 1 2 3 4 5 6 7 (median of 8, 3, 7 is 7) To calculate the CPU time, use the header , and clock_t type. Depends on the CPU of your computer, your number would not be the same as in the sample output below.
Computers and Technology
2 answers:
Stels [109]3 years ago
8 0

Answer:

Check the explanation

Explanation:

#include<iostream.h>

#include<algorithm.h>

#include<climits.h>

#include<bits/stdc++.h>

#include<cstring.h>

using namespace std;

int partition(int arr[], int l, int r, int k);

int kthSmallest(int arr[], int l, int r, int k);

void quickSort(int arr[], int l, int h)

{

if (l < h)

{

// Find size of current subarray

int n = h-l+1;

 

// Find median of arr[].

int med = kthSmallest(arr, l, h, n/2);

 

// Partition the array around median

int p = partition(arr, l, h, med);

 

// Recur for left and right of partition

quickSort(arr, l, p - 1);

quickSort(arr, p + 1, h);

}

int findMedian(int arr[], int n)

{

sort(arr, arr+n); // Sort the array

return arr[n/2]; // Return middle element

}

int kthSmallest(int arr[], int l, int r, int k)

{

// If k is smaller than number of elements in array

if (k > 0 && k <= r - l + 1)

{

int n = r-l+1; // Number of elements in arr[l..r]

 

// Divide arr[] in groups of size 5, calculate median

// of every group and store it in median[] array.

int i, median[(n+4)/5]; // There will be floor((n+4)/5) groups;

for (i=0; i<n/5; i++)

median[i] = findMedian(arr+l+i*5, 5);

if (i*5 < n) //For last group with less than 5 elements

{

median[i] = findMedian(arr+l+i*5, n%5);

i++;

}

int medOfMed = (i == 1)? median[i-1]:

kthSmallest(median, 0, i-1, i/2);

int pos = partition(arr, l, r, medOfMed);

if (pos-l == k-1)

return arr[pos];

if (pos-l > k-1) // If position is more, recur for left

return kthSmallest(arr, l, pos-1, k);

return kthSmallest(arr, pos+1, r, k-pos+l-1);

}

return INT_MAX;

}

void swap(int *a, int *b)

{

int temp = *a;

*a = *b;

*b = temp;

}

int partition(int arr[], int l, int r, int x)

{

// Search for x in arr[l..r] and move it to end

int i;

for (i=l; i<r; i++)

if (arr[i] == x)

break;

swap(&arr[i], &arr[r]);

 

// Standard partition algorithm

i = l;

for (int j = l; j <= r - 1; j++)

{

if (arr[j] <= x)

{

swap(&arr[i], &arr[j]);

i++;

}

}

swap(&arr[i], &arr[r]);

return i;

}

 

/* Function to print an array */

void printArray(int arr[], int size)

{

int i;

for (i=0; i < size; i++)

cout << arr[i] << " ";

cout << endl;

}

 

// Driver program to test above functions

int main()

{

float a;

clock_t time_req;

int arr[] = {1000, 10, 7, 8, 9, 30, 900, 1, 5, 6, 20};

int n = sizeof(arr)/sizeof(arr[0]);

quickSort(arr, 0, n-1);

cout << "Sorted array is\n";

printArray(arr, n);

time_req = clock();

for(int i=0; i<200000; i++)

{

a = log(i*i*i*i);

}

time_req = clock()- time_req;

cout << "Processor time taken for multiplication: "

<< (float)time_req/CLOCKS_PER_SEC << " seconds" << endl;

 

// Using pow function

time_req = clock();

for(int i=0; i<200000; i++)

{

a = log(pow(i, 4));

}

time_req = clock() - time_req;

cout << "Processor time taken in pow function: "

<< (float)time_req/CLOCKS_PER_S

return 0;

}

..................................................................................................................................................................................................................................................................................................................................

OR

.......................

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

 

// Swap utility

void swap(long int* a, long int* b)

{

int tmp = *a;

*a = *b;

*b = tmp;

}

 

// Bubble sort

void bubbleSort(long int a[], long int n)

{

for (long int i = 0; i < n - 1; i++) {

for (long int j = 0; j < n - 1 - i; j++) {

if (a[j] > a[j + 1]) {

swap(&a[j], &a[j + 1]);

}

}

}

}

 

// Insertion sort

void insertionSort(long int arr[], long int n)

{

long int i, key, j;

for (i = 1; i < n; i++) {

key = arr[i];

j = i - 1;

 

// Move elements of arr[0..i-1], that are

// greater than key, to one position ahead

// of their current position

while (j >= 0 && arr[j] > key) {

arr[j + 1] = arr[j];

j = j - 1;

}

arr[j + 1] = key;

}

}

 

// Selection sort

void selectionSort(long int arr[], long int n)

{

long int i, j, midx;

 

for (i = 0; i < n - 1; i++) {

 

// Find the minimum element in unsorted array

midx = i;

 

for (j = i + 1; j < n; j++)

if (arr[j] < arr[min_idx])

midx = j;

 

// for plotting graph with integer values

printf("%li, %li, %li, %li\n",

n,

(long int)tim1[it],

(long int)tim2[it],

(long int)tim3[it]);

 

// increases the size of array by 10000

n += 10000;

}

 

return 0;

}

Ivahew [28]3 years ago
8 0

Answer:

See explaination

Explanation:

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

// Swap utility

void swap(long int* a, long int* b)

{

int tmp = *a;

*a = *b;

*b = tmp;

}

// Bubble sort

void bubbleSort(long int a[], long int n)

{

for (long int i = 0; i < n - 1; i++) {

for (long int j = 0; j < n - 1 - i; j++) {

if (a[j] > a[j + 1]) {

swap(&a[j], &a[j + 1]);

}

}

}

}

// Insertion sort

void insertionSort(long int arr[], long int n)

{

long int i, key, j;

for (i = 1; i < n; i++) {

key = arr[i];

j = i - 1;

// Move elements of arr[0..i-1], that are

// greater than key, to one position ahead

// of their current position

while (j >= 0 && arr[j] > key) {

arr[j + 1] = arr[j];

j = j - 1;

}

arr[j + 1] = key;

}

}

// Selection sort

void selectionSort(long int arr[], long int n)

{

long int i, j, midx;

for (i = 0; i < n - 1; i++) {

// Find the minimum element in unsorted array

midx = i;

for (j = i + 1; j < n; j++)

if (arr[j] < arr[min_idx])

midx = j;

// Swap the found minimum element

// with the first element

swap(&arr[midx], &arr[i]);

}

}

// Driver code

int main()

{

long int n = 10000;

int it = 0;

// Arrays to store time duration

// of sorting algorithms

double tim1[10], tim2[10], tim3[10];

printf("A_size, Bubble, Insertion, Selection\n");

// Performs 10 iterations

while (it++ < 10) {

long int a[n], b[n], c[n];

// generating n random numbers

// storing them in arrays a, b, c

for (int i = 0; i < n; i++) {

long int no = rand() % n + 1;

a[i] = no;

b[i] = no;

c[i] = no;

}

// using clock_t to store time

clock_t start, end;

// Bubble sort

start = clock();

bubbleSort(a, n);

end = clock();

tim1[it] = ((double)(end - start));

// Insertion sort

start = clock();

insertionSort(b, n);

end = clock();

tim2[it] = ((double)(end - start));

// Selection sort

start = clock();

selectionSort(c, n);

end = clock();

tim3[it] = ((double)(end - start));

// type conversion to long int

// for plotting graph with integer values

printf("%li, %li, %li, %li\n",

n,

(long int)tim1[it],

(long int)tim2[it],

(long int)tim3[it]);

// increases the size of array by 10000

n += 10000;

}

return 0;

}

You might be interested in
Windows workstations all have elements of server software built-in. What are these elements, and why is the Windows Professional
lions [1.4K]

Answer:

The answer is below

Explanation:

Elements of Server software that is built-in, in Windows workstations are:

1. Hard drives,

2. RAM (Random Access Memory)

3. Processors

4. Network adapters.

Windows Professional OS is not considered a server due to the following:

1. Windows Professional OS has a limit on the number of client connections it allowed.

2. Unlike Server, Professional OS uses less memory

2. In comparison to Server, Professional OS uses the CPU less efficiently

4. Professional OS is not built to process background tasks, unlike Server that is configured to perform background tasks.

6 0
3 years ago
What is DAP? How LDAP is different from DAP?
lions [1.4K]

Answer: DAP stands for directory access protocol .It is a protocol that is used for accessing the information from the directory of X.500 protocol.

LDAP(Lightweight directory access protocol) is the software protocol that is present for the simplification process of the X.500 protocol and to make it light-weighted .It is basically a version of DAP in a lightweight form.

8 0
4 years ago
Sam wants to move across the text and his documents to add data at predefined stops. Which key will Hughes to navigate through t
Setler [38]

Answer:

The TAB key

Explanation:

Sam would use the TAB key, located on the left side of the keyboard, to move around his document to add stops and format its information properly.

Pressing the TAB key will introduce a tab code in his document, which is like moving ahead by a certain number of spaces (5,6, 10 spaces for example, depending on the configuration of the document), but without using spaces, using a tab which is a much better option to position, align things up.

5 0
4 years ago
I have been trying to use brainly recently but i cant because everytime i watch an ad to get an answer, its an interactive ad, s
Troyanec [42]

Answer:

remove ads

Explanation:

by buying a no ad pack

5 0
2 years ago
How to make classs constructer java.
ladessa [460]

Answer:

A constructor doesn't have a return type.

The name of the constructor must be the same as the name of the class.

Unlike methods, constructors are not considered to be members of a class.  

A constructor is called when a new instance of an object is created.

Explanation:

4 0
3 years ago
Other questions:
  • Which innovation allowed for the mass production of goods? A. Cotton gin B. Sewing machine C. Industrial lubricator D. Interchan
    6·1 answer
  • This is the main work area of your computer.
    7·1 answer
  • When inside a closed work environment, its okay to openly talk with co-workers about PII
    6·1 answer
  • Allows an administrator to query a dns database and find the host name associated with a specific ip address or
    15·1 answer
  • A word processing program would probably be used to: 
    8·1 answer
  • Suppose that you want to write a program that inputs customer data and displays a summary of the number of customers who owe mor
    14·1 answer
  • What is a characteristic of the network layer in the OSI model allows carrying packets for multiple types of communications amon
    9·1 answer
  • Write an if statement that assigns 0.2 to commission if sales is greater than or equal to 10000.
    11·1 answer
  • Discuss the advantages and disadvantages of supporting links to files that cross mount points (that is, the file link refers to
    6·1 answer
  • balance exercises used for introducing balance training should initially involve little joint motion and improve what type of co
    9·1 answer
Add answer
Login
Not registered? Fast signup
Signup
Login Signup
Ask question!