This is in response to the bubble sort and selection sorts for linked lists. On my system, (Intel 2600K, 3.4ghz), it sorts a list with 4,194,304 nodes containing 64 bit unsigned integers in about 1.05 seconds.
Code:
#define NUMLISTS 32
/* number of lists */
typedef unsigned long long UI64;
typedef struct NODE_{
struct NODE_ * next;
UI64 data;
I am looking for a function or algorithm to best merge and sort similar content between two lists of unordered strings each in individual files (very large files ~200mb each).
For example, these files have a common first string and are merged based on them:
File 1: red, apple green, truck blue, car yellow, ball orange, candy
File 2:
gold, necklace green, tree yellow, sticker blue, water red, bag
I am looking for the following output:
Output:
red, apple, bag green, truck, tree blue, car, water yellow, ball, sticker orange, candy gold, necklace
I know how to add a node and delete a node from the beginning and from the end of the List. Now I want to sort the List by Age. I tried everything but there must be a very little mistake that I can't find. Here is my code:
#include <iostream> using namespace std; struct Node { char name[20]; int age; double height;
I've been trying to implement a quick sort algorithm for linked list but when i try to run it with 1000000 values my compiler tells me its running too long and ends up not finishing. However when i run it with 10 values it seems to work fine.
I am trying to sort a linked list using quick sort in C. Here is my code--Actually, first I am inserting data in the list from a file. For a small file, it's working fine. But for large file it's just not working.
I'm trying to apply a bubble sort on a linked list. It works in the first traversal, but then after the code cPtr = nPtr;, it inputs repeated digits at the end of the (semi-sorted) linked lists.
I am making a custom linked list (for fun!) and want to implement a sort method that sorts the stored data using the stored types > and < operators (will require the type to have these operators overloaded)
What is the best way to do this? I guess the first thing one might jump to would be to compare the current node with the the node to its "right" see if one is greater than the other. Then keep iterating through the list until you don't swap any more nodes. However I am thinking there is probably a more efficient way to do this. Here is my code so far:
At the line number 65 that's my sort method first i sum up all the value in the nodes after that i want to sort the Nodes In ascending order but the method is not working ...
#include <iostream> #include <conio.h> using namespace std; // Node Class
is this correct? I used this sorting with numbers i don't know if it is the same with strings. When I run it, there are no errors detected, but when i try to view it, the inputs does not appear.
HelI have been tasked with creating a program which (1) takes in integer values from a user (until the user enters -1) and inputs these values into a linked list. This (2)original list is then to be printed out. The program then uses the algorithm "bubble sort" to (3)order the list in descending order before finally printing it out again.
I have managed to do this but I kind of cheated since I do not quite understand how to manipulate a linked list. What did was I took the values in the linked list and transferred them into an array and then did bubble sort on that array.how to do bubble sort on a linked list as well as how to print a linked list.
Code:
#include<stdio.h>#include<stdlib.h> typedef struct node { int info; struct node *link;
i am making a program that reads a file from .txt and print them out using linked list. However, i need to sort them from the highest price to lowest price.
Code:
/* my structs */ typedef struct{ Node *head; Node *tail; Node *iterator; int size; } List;
[Code]...
i know its long but im afraid that i might miss out some things.
Code: /* Mergesort: Use merge() to sort an array of size n */ #include <stdio.h> #include <stdlib.h> void mergesort(int key[], int n) { int j, k, m, *w; for (m = 1; m < n; m *= 2)
[Code] .....
Question : Modify mergesort() so that it can be used with an array of any size, not just with a size that is a power of two. Recall that any positive integer can be expressed as a sum of powers of two. For example,
27 = 16 + 8 + 2 + 1
Consider the array as a collection of subarrays of sizes that are powers of two. Sort the subarrays and then use merge() to produce the final sorted array.
I tried so many algorithms and all failed!! What i dont know is how to create subarrays ?
I tried to keep the coding style as similar as possible. I tested these with 4 million (4x1024x1024) 64 bit unsigned integers, Visual Studio 2005, 64 bit mode, Win XP X64, Intel 2600K 3.4ghz cpu. The average time for top down = 3.7 seconds, bottom up = 3.5 seconds.
Code: // tsorttd.h - top down merge sort template <class T> T * TopDownMergeSort(T a[], T b[], size_t n) { TopDownMergeSortAtoA(a, b, 0, n);
Code: typedef vector<int> LIST; // LIST can be a vector of any comparable type static LIST merge_sort(LIST &linp){ size_t i, width; LIST lout(linp.size()); // second list for output
I'm trying to implement the Merge-Sort algorithm. I only had the pseudocode for it and have some problems coding this into C.
I have only covered pointers recently and I tried using them, which did not work. I started with the code for the merge algorithm and only used a 10 element array, which was already divided into two sorted subarrays:
Code: #include <stdio.h>#include <stdlib.h> int main() { int a[5]={1,5,6,10,13}, b[5]={4,8,9,10,14},c[10], *i,*j,k;
[Code].....
This is the result that I get:
Code: 1 4 5 6 8 9 10 10 13 0
So I think the problem occurs because in the second to last loop i is incremented again, but the end of the array is already reached, and the compiler has no element a[6] to compare with *j in the last run of the loop. Is there generally a better way to implement Merge?
// mergefile2norecreation.cpp : definisce il punto di ingresso dell'applicazione console. // // Filemerge.cpp : definisce il punto di ingresso dell'applicazione console. //
#include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) {
There is a smart way to make a merge sort between 2 file already ordered? I had try it ,and above there is my result,it works but i think that it's possible to do it in a smart way...
I would like to place the first column in one array and second in another. I am using the merge sort and merge algorithm from my book to sort the first column (x-coord) in descending order and the second column (y-coord) in ascending order. The output would look like this.
I am ignoring the where(line number) for now. The error I get is: cannot convert 'points_struct*' to 'int*' for argument '1' to 'int mergesort(int*, int, int)'.
So my question is how to get my points_struct arrays to work with the algorithm I have from book. Here is what I have so far.
#include<iostream> #include<fstream> using namespace std;