Determining Average Number Of Comparisons For Quicksort?
Feb 24, 2014
My objective is to execute quick sort ( i was told to convert the pseudocode from the Cormen book) using arrays of increasing sizes and find the average number of comparisons for each of those sizes over 100 iterations. This is a school project and the numbers I am getting are far larger than those of my friends, so I am clearly doing something wrong. I believe it must be in the way that I am collecting and averaging my number of comparisons. I will first give the method in which most of that calculating is done, then I will include the whole program.
public static void tests(int arraySize) {
long numComparisons = 0;
long averageComparisons = 0;
long[] numComparisonsArray = new long[100];
for(int i = 0; i<100; i++) {
int[] array= genRandomArray(arraySize);
Any better way to write a program that takes a user number input and the program determines whether or not the number is prime or not. It was suppose to be a number between 0 and 8,000,000.
import java.util.Scanner; public class prime1 { public static void main(String args [])
Find the numbers which is closest to the average sum for a given array of N (1<=N<=50) of natural numbers. If there are two numbers who meet the requirement, return the smaller of the two.
For example for the array of: 1,2,3,4,5,6 the average sum is 3.5, so both 3 and 4 are the closest to that, but the program has to return 3, because it's smaller than 4.
The array can also contain duplicates. First we type the number of elements in the array, then in each line we add the numbers. Name of the class: Array
**Note**: Create a data structure array and use it.
And this is what they have given to me, I just need to type the code:
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Array<E> { public static int closestNumber( ) {
You are to write a parallel program that will receive a large array of unsorted integers containing digits from 0 to 99. The program will have to calculate the SUM and AVERAGE of ODD number digits between 25 and 75 (inclusive).
The user may specify the size or the array and the total processor that the machine has. The size of the array must be divisible by number of processor. Based on the given size, the computer will generate random integer numbers automatically to populate the array.
The program should display the status of the calculation for each processor. The result should be displayed after all calculations are completed.Error messages should be displayed appropriately
a) Write a sequential (non-parallel) program that will accomplish above task. b) Write a concurrent (parallel) program that will produce the result of the above task.
I am writing a program using a given test drive... I am supposed to write two classes according to the test drive. The calculated correct answer should be 115.50 but i keep getting 115.52 instead and i just can't figure out what i'm doing wrong.
Here is the test drive code:
import java.text.NumberFormat; public class FinalTester { public static void main(String[] args) { double avgPurchase; Order[] lastYear = new Order[4];
code a 10 * 10 matrix, with random numbers from 1 to 100,
i) Find the most repeated number. ii) Use the Binary Sort, to sort the matrix in ascending order. iii) Find the Column, with the highest average number.
You are to write a parallel program that will receive a large array of unsorted integers containing digits from 0 to 99. The program will have to calculate the SUM and AVERAGE of ODD number digits between 25 and 75 (inclusive). The user may specify the size or the array and the total processor that the machine has. The size of the array must be divisible by number of processor. Based on the given size, the computer will generate random integer numbers automatically to populate the array.
The program should display the status of the calculation for each processor. The result should be displayed after all calculations are completed.Error messages should be displayed appropriately
a) Write a sequential (non-parallel) program that will accomplish above task. b) Write a concurrent (parallel) program that will produce the result of the above task.
The purpose of this project is to determine the letter grade of students. The program needs to accept two command line arguments:
The first being the name of a disk file that contains the names of students, and their test scores, separated by commas followed by one or more spaces. Each line in the file will contain scores for one student.
The second argument is the name of an output disk file. The program is supposed to create a new output disk file using that name.
The number of students in the input file is unknown during compile time. The name of input and output files could be anything and only known during run time. Additionally, the average scores, along with the minimum and maximum scores for each test are to be displayed in the console.
Calculation: Final Score = quiz1 * .10 + quiz2 * .10 + quiz3 * .10 + quiz4 * .10 + midi * .20 + midii * .15 + final * .25 Final Score >= 90% then letter grade is A, 80%-89% B, 70%-79% C, 60-69% D, <= 59% F
I want to generate a Hash key for a [ Nested Hierarchical nodes]. Any lightweight non-cryptographic hash map functions which generate a key, so that I can use this hashkey to comparison purposes.
NOTE: Security is not a concern for me, I just want to create a Unique ID.
I am having a hard time getting some comparisons with Date to function correctly.I have a driver program and two classes, ZodiacDriver , ZodiacSign and ZodiacTable. In the driver program I build an arraylist of zodiacsigns in zodiactable. That all appears to be working I then pass a birthdate and the zodiac table to a method, determineSign. This is where I am having trouble. Right now Im just trying to match the incoming birthdate with a zodiac's date in the table. however no matter what date I enter, i get pisces, which happens to be at the bottom of the list. If I remove pisces from the list I get the current last zodiac. Here is my code:
I am currently writing the Quick Sort implementation where the pivot is chosen to be the medianOf3 element in the sub array. The program should output the total number of comparisons (excluding the ones needed to compute the median itself).I cannot spot any mistake anywhere - yet I am getting the wrong output in the end.
Input file (100.txt) attached. Current output: 513. Correct output: 518. Where are the missing 5 comparisons? />
I have a HashSet, which I created to prevent duplicates upon output, but of course it's printing duplicates(or else I wouldn't be posting this). The order of my output does not matter, nor the input. The data type is String in the format (x + "," + z), where x and z are integers, creating a collection of coordinate sets. So to prevent the output of duplicates, I'm trying to get rid of the duplicates before they are added to the collection.
I've tried doing a '.equals()' string comparison but what happens is, since my string is added via one variable, it compares itself to itself and if itself equals itself it won't be added to the collection. I really need to keep this as a comparison of a single variable, because creating a key for each value would be sooo ridiculous for this volume of inputs.
So, with that being said, I would like to add one copy of the string, discard the duplicates, and do this thousands of times..
I have three sorting algorithms in which I must count the number of swaps/copies and comparisons. I am meant to only count the swaps and comparisons that involve anything other than indexes as they are too fast to really matter (according to the professor). My counters are in the right position or not. I keep coming up with swaps/comparisons that don't necessarily match the formulas I'm finding for best/worst case. Makes me think that my counters are somehow out of place or that I don't have enough of them.
Insertion Sort:
public class InsertionSort { public static void insertionSorter(int[] array) { int firstValue; // first value in array int scan; // scan array through the array int moves = 0; // number of moves
I am trying to do a program that takes all of the chars from a string and orders them in alphabetical order. It works fine, but when a is a last letter of a string it isn't being sorted.
Example: bcba = bbca, omnibus = bimnous (here u is in wrong place)
Here is my code:
public class sorty{ public static void sort(char[] a, int low, int high){ int i = low; int j = high; if (j - i < 2) return; int m = (j+i)/2; char p = a[m];
I have an error using quicksort and this is a project ... The error occurs for numbers such as 7500 and bigger ...
Exception in thread "main" java.lang.StackOverflowError at QuickSort.QuickSort(QuickSort.java:45) at QuickSort.QuickSort(QuickSort.java:46) at QuickSort.QuickSort(QuickSort.java:46) ...
Java Code:
import javax.swing.JOptionPane; public class QuickSort{ public static void main(String[] args){ int p=new Integer(JOptionPane.showInputDialog("Jepni numrin e kufizave: ")); int[] ListaNumrave= new int[p]; //QuickSort Zbrites
I have to count the comparisons in the quick sort. I have done it by using a global variable. But I am stuck in doing it recursively.
This is my code.
import static java.time.Clock.system; import java.util.Arrays; public class test { /** * The swap method swaps the contents of two elements in an int array. * * @param The array containing the two elements. * @param a The subscript of the first element. * @param b The subscript of the second element. * */
I have a custom linkedList(single) class that uses the provided node class. Now I have another class to QuickSort this.(left out for brevity, i just wanna focus on editing the L.head). However, instead of passing the quicksort method the entire linkedList, I want to pass it just the head from the linkedlist.
My problem is accessing this head node and changing it from the quckSort method/class, and I dont want to delete it or simply just change the element value
Main:
public class TestLinkedList { public static <E extends Comparable<E>> void main(String[] args) { MyLinkedList<Integer> L = new MyLinkedList<Integer>(); L.add(3); L.add(1); L.add(2); System.out.println("Initial=" + L); MySort.quickSort(L.head); System.out.println("After ="+L); } }
QuickSort:
public class MySort { public static <E extends Comparable<E>> void quickSort(MyNode<E> list) { list = list.next; }
Node Class:
public class MyNode<E extends Comparable<E>> { E element; MyNode<E> next; public MyNode(E item) { element = item; next = null;
I am new on this and I will be working in a gpa and average program. This is my code so far: Every time that I try to add the gpa part it gives me errors or just duplicates whatever I've in average and displays it in gpa
/** * This program shows a database of students in a school. * It gathers information as name, classes, grades, and calculates average and gpa average. * */ import javax.swing.JOptionPane;
In the class, you will have three instance variables,
1) array to hold the numbers, 2) the odd average, and 3) the even average.
The constructor should accept as input the array from the tester class and assign it to the instance variable. You should then have a method, findAverage, that will read the array and then calculate the average of the even input values and the average of the odd input values. (Hint: You can use % (mod) to determine if a number is even or odd). Your program will need a getOddAverage and a getEvenAverage method.
public class oddEvenAverage { int [] myArray = new int[10]; public double oddAverage; public double evenAverage; public oddEvenAverage(int number){ int myArray = number;
[Code] .....
What am i doing wrong here? I can't get it working!
I'm trying to calculate the average of grades that a user puts in. Here is my code so far:
public static void main(String[] args) { Scanner input = new Scanner (System.in); System.out.println("Please enter an array of grades seperated bt a comma."); input.nextLine(); String arrayOfGrades = "100,50,100"; String[] grades = arrayOfGrades.split(",");
[Code] .....
I think I'm on the right track, the only big error I'm really getting is the line: sum += grades[i]. It's saying string can not be converted into a double.