making branch gh-pages empty [deleted all files] (#859)
63
BeadSort.cpp
@@ -1,63 +0,0 @@
|
||||
// C++ program to implement gravity/bead sort
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
using namespace std;
|
||||
|
||||
#define BEAD(i, j) beads[i * max + j]
|
||||
|
||||
// function to perform the above algorithm
|
||||
void beadSort(int *a, int len)
|
||||
{
|
||||
// Find the maximum element
|
||||
int max = a[0];
|
||||
for (int i = 1; i < len; i++)
|
||||
if (a[i] > max)
|
||||
max = a[i];
|
||||
|
||||
// allocating memory
|
||||
unsigned char beads[max*len];
|
||||
memset(beads, 0, sizeof(beads));
|
||||
|
||||
// mark the beads
|
||||
for (int i = 0; i < len; i++)
|
||||
for (int j = 0; j < a[i]; j++)
|
||||
BEAD(i, j) = 1;
|
||||
|
||||
for (int j = 0; j < max; j++)
|
||||
{
|
||||
// count how many beads are on each post
|
||||
int sum = 0;
|
||||
for (int i=0; i < len; i++)
|
||||
{
|
||||
sum += BEAD(i, j);
|
||||
BEAD(i, j) = 0;
|
||||
}
|
||||
|
||||
// Move beads down
|
||||
for (int i = len - sum; i < len; i++)
|
||||
BEAD(i, j) = 1;
|
||||
}
|
||||
|
||||
// Put sorted values in array using beads
|
||||
for (int i = 0; i < len; i++)
|
||||
{
|
||||
int j;
|
||||
for (j = 0; j < max && BEAD(i, j); j++);
|
||||
|
||||
a[i] = j;
|
||||
}
|
||||
}
|
||||
|
||||
// driver function to test the algorithm
|
||||
int main()
|
||||
{
|
||||
int a[] = {5, 3, 1, 7, 4, 1, 1, 20};
|
||||
int len = sizeof(a)/sizeof(a[0]);
|
||||
|
||||
beadSort(a, len);
|
||||
|
||||
for (int i = 0; i < len; i++)
|
||||
printf("%d ", a[i]);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1,76 +0,0 @@
|
||||
// Source : https://www.geeksforgeeks.org/bitonic-sort/
|
||||
|
||||
/* C++ Program for Bitonic Sort. Note that this program
|
||||
works only when size of input is a power of 2. */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <algorithm.h>
|
||||
using namespace std;
|
||||
|
||||
/*The parameter dir indicates the sorting direction, ASCENDING
|
||||
or DESCENDING; if (a[i] > a[j]) agrees with the direction,
|
||||
then a[i] and a[j] are interchanged.*/
|
||||
void compAndSwap(int a[], int i, int j, int dir)
|
||||
{
|
||||
if (dir == (a[i] > a[j]))
|
||||
swap(a[i], a[j]);
|
||||
}
|
||||
|
||||
/*It recursively sorts a bitonic sequence in ascending order,
|
||||
if dir = 1, and in descending order otherwise (means dir=0).
|
||||
The sequence to be sorted starts at index position low,
|
||||
the parameter cnt is the number of elements to be sorted.*/
|
||||
void bitonicMerge(int a[], int low, int cnt, int dir)
|
||||
{
|
||||
if (cnt > 1)
|
||||
{
|
||||
int k = cnt / 2;
|
||||
for (int i = low; i < low + k; i++)
|
||||
compAndSwap(a, i, i + k, dir);
|
||||
bitonicMerge(a, low, k, dir);
|
||||
bitonicMerge(a, low + k, k, dir);
|
||||
}
|
||||
}
|
||||
|
||||
/* This function first produces a bitonic sequence by recursively
|
||||
sorting its two halves in opposite sorting orders, and then
|
||||
calls bitonicMerge to make them in the same order */
|
||||
void bitonicSort(int a[], int low, int cnt, int dir)
|
||||
{
|
||||
if (cnt > 1)
|
||||
{
|
||||
int k = cnt / 2;
|
||||
|
||||
// sort in ascending order since dir here is 1
|
||||
bitonicSort(a, low, k, 1);
|
||||
|
||||
// sort in descending order since dir here is 0
|
||||
bitonicSort(a, low + k, k, 0);
|
||||
|
||||
// Will merge wole sequence in ascending order
|
||||
// since dir=1.
|
||||
bitonicMerge(a, low, cnt, dir);
|
||||
}
|
||||
}
|
||||
|
||||
/* Caller of bitonicSort for sorting the entire array of
|
||||
length N in ASCENDING order */
|
||||
void sort(int a[], int N, int up)
|
||||
{
|
||||
bitonicSort(a, 0, N, up);
|
||||
}
|
||||
|
||||
// Driver code
|
||||
int main()
|
||||
{
|
||||
int a[] = {3, 7, 4, 8, 6, 2, 1, 5};
|
||||
int N = sizeof(a) / sizeof(a[0]);
|
||||
|
||||
int up = 1; // means sort in ascending order
|
||||
sort(a, N, up);
|
||||
|
||||
printf("Sorted array: \n");
|
||||
for (int i = 0; i < N; i++)
|
||||
printf("%d ", a[i]);
|
||||
return 0;
|
||||
}
|
||||
@@ -1,83 +0,0 @@
|
||||
//Bubble Sort
|
||||
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
using namespace std;
|
||||
|
||||
int main()
|
||||
{
|
||||
int n;
|
||||
short swap_check = 1;
|
||||
cout << "Enter the amount of numbers to sort: ";
|
||||
cin >> n;
|
||||
vector<int> numbers;
|
||||
cout << "Enter " << n << " numbers: ";
|
||||
int num;
|
||||
|
||||
//Input
|
||||
for (int i = 0; i < n; i++)
|
||||
{
|
||||
cin >> num;
|
||||
numbers.push_back(num);
|
||||
}
|
||||
|
||||
//Bubble Sorting
|
||||
for (int i = 0; (i < n) && (swap_check == 1); i++)
|
||||
{
|
||||
swap_check = 0;
|
||||
for (int j = 0; j < n - 1 - i; j++)
|
||||
{
|
||||
if (numbers[j] > numbers[j + 1])
|
||||
{
|
||||
swap_check = 1;
|
||||
swap(numbers[j], numbers[j + 1]);// by changing swap location. I mean, j. If the number is greater than j + 1, then it means the location.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Output
|
||||
cout << "\nSorted Array : ";
|
||||
for (int i = 0; i < numbers.size(); i++)
|
||||
{
|
||||
if (i != numbers.size() - 1)
|
||||
{
|
||||
cout << numbers[i] << ", ";
|
||||
}
|
||||
else
|
||||
{
|
||||
cout << numbers[i] << endl;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*The working principle of the Bubble sort algorithm:
|
||||
|
||||
Bubble sort algorithm is the bubble sorting algorithm. The most important reason for calling the bubble is that the largest number is thrown at the end of this algorithm.
|
||||
This is all about the logic.
|
||||
In each iteration, the largest number is expired and when iterations are completed, the sorting takes place.
|
||||
|
||||
What is Swap?
|
||||
|
||||
Swap in the software means that two variables are displaced.
|
||||
An additional variable is required for this operation. x = 5, y = 10.
|
||||
We want x = 10, y = 5. Here we create the most variable to do it.
|
||||
|
||||
int z;
|
||||
z = x;
|
||||
x = y;
|
||||
y = z;
|
||||
|
||||
The above process is a typical displacement process.
|
||||
When x assigns the value to x, the old value of x is lost.
|
||||
That's why we created a variable z to create the first value of the value of x, and finally, we have assigned to y.
|
||||
|
||||
Bubble Sort Algorithm Analysis (Best Case - Worst Case - Average Case)
|
||||
|
||||
Bubble Sort Worst Case Performance is O (n²). Why is that? Because if you remember Big O Notation, we were calculating the complexity of the algorithms in the nested loops.
|
||||
The n * (n - 1) product gives us O (n²) performance. In the worst case all the steps of the cycle will occur.
|
||||
Bubble Sort (Avarage Case) Performance. Bubble Sort is not an optimal algorithm.
|
||||
in average, O (n²) performance is taken.
|
||||
Bubble Sort Best Case Performance. O (n).
|
||||
However, you can't get the best status in the code we shared above. This happens on the optimized bubble sort algorithm. It's right down there.
|
||||
* /
|
||||
@@ -1,109 +0,0 @@
|
||||
//Returns Sorted elements after performing Cocktail Selection Sort
|
||||
//It is a Sorting algorithm which chooses the minimum and maximum element in an array simultaneously,
|
||||
//and swaps it with the lowest and highest available position iteratively or recursively
|
||||
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
//Iterative Version
|
||||
|
||||
void CocktailSelectionSort(vector<int> &vec, int low, int high)
|
||||
{
|
||||
while (low <= high)
|
||||
{
|
||||
int minimum = vec[low];
|
||||
int minimumindex = low;
|
||||
int maximum = vec[high];
|
||||
int maximumindex = high;
|
||||
|
||||
for (int i = low; i <= high; i++)
|
||||
{
|
||||
if (vec[i] >= maximum)
|
||||
{
|
||||
maximum = vec[i];
|
||||
maximumindex = i;
|
||||
}
|
||||
if (vec[i] <= minimum)
|
||||
{
|
||||
minimum = vec[i];
|
||||
minimumindex = i;
|
||||
}
|
||||
}
|
||||
if (low != maximumindex || high != minimumindex)
|
||||
{
|
||||
swap(vec[low], vec[minimumindex]);
|
||||
swap(vec[high], vec[maximumindex]);
|
||||
}
|
||||
else
|
||||
{
|
||||
swap(vec[low], vec[high]);
|
||||
}
|
||||
|
||||
low++;
|
||||
high--;
|
||||
}
|
||||
}
|
||||
|
||||
//Recursive Version
|
||||
|
||||
void CocktailSelectionSort(vector<int> &vec, int low, int high)
|
||||
{
|
||||
|
||||
if (low >= high)
|
||||
return;
|
||||
|
||||
int minimum = vec[low];
|
||||
int minimumindex = low;
|
||||
int maximum = vec[high];
|
||||
int maximumindex = high;
|
||||
|
||||
for (int i = low; i <= high; i++)
|
||||
{
|
||||
if (vec[i] >= maximum)
|
||||
{
|
||||
maximum = vec[i];
|
||||
maximumindex = i;
|
||||
}
|
||||
if (vec[i] <= minimum)
|
||||
{
|
||||
minimum = vec[i];
|
||||
minimumindex = i;
|
||||
}
|
||||
}
|
||||
if (low != maximumindex || high != minimumindex)
|
||||
{
|
||||
swap(vec[low], vec[minimumindex]);
|
||||
swap(vec[high], vec[maximumindex]);
|
||||
}
|
||||
else
|
||||
{
|
||||
swap(vec[low], vec[high]);
|
||||
}
|
||||
|
||||
CocktailSelectionSort(vec, low + 1, high - 1);
|
||||
}
|
||||
|
||||
//main function, select any one of iterative or recursive version
|
||||
|
||||
int main()
|
||||
{
|
||||
|
||||
int n;
|
||||
cout << "Enter number of elements\n";
|
||||
cin >> n;
|
||||
std::vector<int> v(n);
|
||||
cout << "Enter all the elements\n";
|
||||
for (int i = 0; i < n; ++i)
|
||||
{
|
||||
cin >> v[i];
|
||||
}
|
||||
|
||||
CocktailSelectionSort(v, 0, n - 1);
|
||||
cout << "Sorted elements are\n";
|
||||
for (int i = 0; i < n; ++i)
|
||||
{
|
||||
cout << v[i] << " ";
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
// C++ Program for counting sort
|
||||
#include <iostream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
void countSort(string arr)
|
||||
{
|
||||
|
||||
string output;
|
||||
|
||||
int count[256], i;
|
||||
for (int i = 0; i < 256; i++)
|
||||
count[i] = 0;
|
||||
|
||||
for (i = 0; arr[i]; ++i)
|
||||
++count[arr[i]];
|
||||
|
||||
for (i = 1; i <= 256; ++i)
|
||||
count[i] += count[i - 1];
|
||||
|
||||
for (i = 0; arr[i]; ++i)
|
||||
{
|
||||
output[count[arr[i]] - 1] = arr[i];
|
||||
--count[arr[i]];
|
||||
}
|
||||
|
||||
for (i = 0; arr[i]; ++i)
|
||||
arr[i] = output[i];
|
||||
|
||||
cout << "Sorted character array is " << arr;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
string arr;
|
||||
cin >> arr;
|
||||
|
||||
countSort(arr);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1,66 +0,0 @@
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
int Max(int Arr[], int N)
|
||||
{
|
||||
int max = Arr[0];
|
||||
for (int i = 1; i < N; i++)
|
||||
if (Arr[i] > max)
|
||||
max = Arr[i];
|
||||
return max;
|
||||
}
|
||||
|
||||
int Min(int Arr[], int N)
|
||||
{
|
||||
int min = Arr[0];
|
||||
for (int i = 1; i < N; i++)
|
||||
if (Arr[i] < min)
|
||||
min = Arr[i];
|
||||
return min;
|
||||
}
|
||||
|
||||
void Print(int Arr[], int N)
|
||||
{
|
||||
for (int i = 0; i < N; i++)
|
||||
cout << Arr[i] << ", ";
|
||||
}
|
||||
|
||||
int *Counting_Sort(int Arr[], int N)
|
||||
{
|
||||
|
||||
int max = Max(Arr, N);
|
||||
int min = Min(Arr, N);
|
||||
int *Sorted_Arr = new int[N];
|
||||
|
||||
int *Count = new int[max - min + 1];
|
||||
|
||||
for (int i = 0; i < N; i++)
|
||||
Count[Arr[i] - min]++;
|
||||
|
||||
for (int i = 1; i < (max - min + 1); i++)
|
||||
Count[i] += Count[i - 1];
|
||||
|
||||
for (int i = N - 1; i >= 0; i--)
|
||||
{
|
||||
Sorted_Arr[Count[Arr[i] - min] - 1] = Arr[i];
|
||||
Count[Arr[i] - min]--;
|
||||
}
|
||||
|
||||
return Sorted_Arr;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
|
||||
int Arr[] = {47, 65, 20, 66, 25, 53, 64, 69, 72, 22, 74, 25, 53, 15, 42, 36, 4, 69, 86, 19}, N = 20;
|
||||
int *Sorted_Arr;
|
||||
|
||||
cout << "\n\tOrignal Array = ";
|
||||
Print(Arr, N);
|
||||
Sorted_Arr = Counting_Sort(Arr, N);
|
||||
cout << "\n\t Sorted Array = ";
|
||||
Print(Sorted_Arr, N);
|
||||
cout << endl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
//Insertion Sort
|
||||
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
int main()
|
||||
{
|
||||
int n;
|
||||
cout << "\nEnter the length of your array : ";
|
||||
cin >> n;
|
||||
int Array[n];
|
||||
cout << "\nEnter any " << n << " Numbers for Unsorted Array : ";
|
||||
|
||||
//Input
|
||||
for (int i = 0; i < n; i++)
|
||||
{
|
||||
cin >> Array[i];
|
||||
}
|
||||
|
||||
//Sorting
|
||||
for (int i = 1; i < n; i++)
|
||||
{
|
||||
int temp = Array[i];
|
||||
int j = i - 1;
|
||||
while (j >= 0 && temp < Array[j])
|
||||
{
|
||||
Array[j + 1] = Array[j];
|
||||
j--;
|
||||
}
|
||||
Array[j + 1] = temp;
|
||||
}
|
||||
|
||||
//Output
|
||||
cout << "\nSorted Array : ";
|
||||
for (int i = 0; i < n; i++)
|
||||
{
|
||||
cout << Array[i] << "\t";
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -1,93 +0,0 @@
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
void merge(int arr[], int l, int m, int r)
|
||||
{
|
||||
int i, j, k;
|
||||
int n1 = m - l + 1;
|
||||
int n2 = r - m;
|
||||
|
||||
int L[n1], R[n2];
|
||||
|
||||
for (i = 0; i < n1; i++)
|
||||
L[i] = arr[l + i];
|
||||
for (j = 0; j < n2; j++)
|
||||
R[j] = arr[m + 1 + j];
|
||||
|
||||
i = 0;
|
||||
j = 0;
|
||||
k = l;
|
||||
while (i < n1 && j < n2)
|
||||
{
|
||||
if (L[i] <= R[j])
|
||||
{
|
||||
arr[k] = L[i];
|
||||
i++;
|
||||
}
|
||||
else
|
||||
{
|
||||
arr[k] = R[j];
|
||||
j++;
|
||||
}
|
||||
k++;
|
||||
}
|
||||
|
||||
while (i < n1)
|
||||
{
|
||||
arr[k] = L[i];
|
||||
i++;
|
||||
k++;
|
||||
}
|
||||
|
||||
while (j < n2)
|
||||
{
|
||||
arr[k] = R[j];
|
||||
j++;
|
||||
k++;
|
||||
}
|
||||
}
|
||||
|
||||
void mergeSort(int arr[], int l, int r)
|
||||
{
|
||||
if (l < r)
|
||||
{
|
||||
|
||||
int m = l + (r - l) / 2;
|
||||
|
||||
mergeSort(arr, l, m);
|
||||
mergeSort(arr, m + 1, r);
|
||||
|
||||
merge(arr, l, m, r);
|
||||
}
|
||||
}
|
||||
|
||||
void show(int A[], int size)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < size; i++)
|
||||
cout << A[i] << "\n";
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
int size;
|
||||
cout << "\nEnter the number of elements : ";
|
||||
|
||||
cin >> size;
|
||||
|
||||
int arr[size];
|
||||
|
||||
cout << "\nEnter the unsorted elements : ";
|
||||
|
||||
for (int i = 0; i < size; ++i)
|
||||
{
|
||||
cout << "\n";
|
||||
cin >> arr[i];
|
||||
}
|
||||
|
||||
mergeSort(arr, 0, size);
|
||||
|
||||
cout << "Sorted array\n";
|
||||
show(arr, size);
|
||||
return 0;
|
||||
}
|
||||
@@ -1,62 +0,0 @@
|
||||
//Using general algorithms to sort a collection of strings results in alphanumeric sort.
|
||||
//If it is a numeric string, it leads to unnatural sorting
|
||||
|
||||
//eg, an array of strings 1,10,100,2,20,200,3,30,300
|
||||
//would be sorted in that same order by using conventional sorting,
|
||||
//even though we know the correct sorting order is 1,2,3,10,20,30,100,200,300
|
||||
|
||||
//This Programme uses a comparator to sort the array in Numerical order instead of Alphanumeric order
|
||||
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <algorithm>
|
||||
using namespace std;
|
||||
|
||||
bool NumericSort(string a, string b)
|
||||
{
|
||||
while (a[0] == '0')
|
||||
{
|
||||
a.erase(a.begin());
|
||||
}
|
||||
while (b[0] == '0')
|
||||
{
|
||||
b.erase(b.begin());
|
||||
}
|
||||
int n = a.length();
|
||||
int m = b.length();
|
||||
if (n == m)
|
||||
return a < b;
|
||||
return n < m;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
|
||||
int n;
|
||||
cout << "Enter number of elements to be sorted Numerically\n";
|
||||
cin >> n;
|
||||
|
||||
vector<string> v(n);
|
||||
cout << "Enter the string of Numbers\n";
|
||||
for (int i = 0; i < n; i++)
|
||||
{
|
||||
cin >> v[i];
|
||||
}
|
||||
|
||||
sort(v.begin(), v.end());
|
||||
cout << "Elements sorted normally \n";
|
||||
for (int i = 0; i < n; i++)
|
||||
{
|
||||
cout << v[i] << " ";
|
||||
}
|
||||
cout << "\n";
|
||||
|
||||
sort(v.begin(), v.end(), NumericSort);
|
||||
cout << "Elements sorted Numerically \n";
|
||||
for (int i = 0; i < n; i++)
|
||||
{
|
||||
cout << v[i] << " ";
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1,61 +0,0 @@
|
||||
/* C++ implementation Odd Even Sort */
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
|
||||
using namespace std;
|
||||
|
||||
void oddEven(vector<int> &arr, int size)
|
||||
{
|
||||
bool sorted = false;
|
||||
while (!sorted)
|
||||
{
|
||||
sorted = true;
|
||||
for (int i = 1; i < size - 1; i += 2) //Odd
|
||||
{
|
||||
if (arr[i] > arr[i + 1])
|
||||
{
|
||||
swap(arr[i], arr[i + 1]);
|
||||
sorted = false;
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < size - 1; i += 2) //Even
|
||||
{
|
||||
if (arr[i] > arr[i + 1])
|
||||
{
|
||||
swap(arr[i], arr[i + 1]);
|
||||
sorted = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void show(vector<int> A, int size)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < size; i++)
|
||||
cout << A[i] << "\n";
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
int size, temp;
|
||||
cout << "\nEnter the number of elements : ";
|
||||
cin >> size;
|
||||
|
||||
vector<int> arr;
|
||||
|
||||
cout << "\nEnter the unsorted elements : \n";
|
||||
|
||||
for (int i = 0; i < size; ++i)
|
||||
{
|
||||
cin >> temp;
|
||||
arr.push_back(temp);
|
||||
}
|
||||
|
||||
oddEven(arr, size);
|
||||
|
||||
cout << "Sorted array\n";
|
||||
show(arr, size);
|
||||
return 0;
|
||||
}
|
||||
@@ -1,67 +0,0 @@
|
||||
/* C implementation QuickSort */
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
int partition(int arr[], int low, int high)
|
||||
{
|
||||
int pivot = arr[high]; // pivot
|
||||
int i = (low - 1); // Index of smaller element
|
||||
|
||||
for (int j = low; j < high; j++)
|
||||
{
|
||||
// If current element is smaller than or
|
||||
// equal to pivot
|
||||
if (arr[j] <= pivot)
|
||||
{
|
||||
i++; // increment index of smaller element
|
||||
int temp = arr[i];
|
||||
arr[i] = arr[j];
|
||||
arr[j] = temp;
|
||||
}
|
||||
}
|
||||
int temp = arr[i + 1];
|
||||
arr[i + 1] = arr[high];
|
||||
arr[high] = temp;
|
||||
return (i + 1);
|
||||
}
|
||||
|
||||
void quickSort(int arr[], int low, int high)
|
||||
{
|
||||
if (low < high)
|
||||
{
|
||||
|
||||
int p = partition(arr, low, high);
|
||||
|
||||
quickSort(arr, low, p - 1);
|
||||
quickSort(arr, p + 1, high);
|
||||
}
|
||||
}
|
||||
|
||||
void show(int arr[], int size)
|
||||
{
|
||||
for (int i = 0; i < size; i++)
|
||||
cout << arr[i] << "\n";
|
||||
}
|
||||
|
||||
// Driver program to test above functions
|
||||
int main()
|
||||
{
|
||||
int size;
|
||||
cout << "\nEnter the number of elements : ";
|
||||
|
||||
cin >> size;
|
||||
|
||||
int arr[size];
|
||||
|
||||
cout << "\nEnter the unsorted elements : ";
|
||||
|
||||
for (int i = 0; i < size; ++i)
|
||||
{
|
||||
cout << "\n";
|
||||
cin >> arr[i];
|
||||
}
|
||||
quickSort(arr, 0, size);
|
||||
cout << "Sorted array\n";
|
||||
show(arr, size);
|
||||
return 0;
|
||||
}
|
||||
@@ -1,68 +0,0 @@
|
||||
#include <iostream>
|
||||
#include <cstdlib>
|
||||
#include <cmath>
|
||||
#include <cstring>
|
||||
using namespace std;
|
||||
void radixsort(int a[], int n)
|
||||
{
|
||||
int count[10];
|
||||
int output[n];
|
||||
memset(output, 0, sizeof(output));
|
||||
memset(count, 0, sizeof(count));
|
||||
int max = 0;
|
||||
for (int i = 0; i < n; ++i)
|
||||
{
|
||||
if (a[i] > max)
|
||||
{
|
||||
max = a[i];
|
||||
}
|
||||
}
|
||||
int maxdigits = 0;
|
||||
while (max)
|
||||
{
|
||||
maxdigits++;
|
||||
max /= 10;
|
||||
}
|
||||
for (int j = 0; j < maxdigits; j++)
|
||||
{
|
||||
for (int i = 0; i < n; i++)
|
||||
{
|
||||
int t = pow(10, j);
|
||||
count[(a[i] % (10 * t)) / t]++;
|
||||
}
|
||||
int k = 0;
|
||||
for (int p = 0; p < 10; p++)
|
||||
{
|
||||
for (int i = 0; i < n; i++)
|
||||
{
|
||||
int t = pow(10, j);
|
||||
if ((a[i] % (10 * t)) / t == p)
|
||||
{
|
||||
output[k] = a[i];
|
||||
k++;
|
||||
}
|
||||
}
|
||||
}
|
||||
memset(count, 0, sizeof(count));
|
||||
for (int i = 0; i < n; ++i)
|
||||
{
|
||||
a[i] = output[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
void print(int a[], int n)
|
||||
{
|
||||
for (int i = 0; i < n; ++i)
|
||||
{
|
||||
cout << a[i] << " ";
|
||||
}
|
||||
cout << endl;
|
||||
}
|
||||
int main(int argc, char const *argv[])
|
||||
{
|
||||
int a[] = {170, 45, 75, 90, 802, 24, 2, 66};
|
||||
int n = sizeof(a) / sizeof(a[0]);
|
||||
radixsort(a, n);
|
||||
print(a, n);
|
||||
return 0;
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
//Selection Sort
|
||||
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
int main()
|
||||
{
|
||||
int Array[6];
|
||||
cout << "\nEnter any 6 Numbers for Unsorted Array : ";
|
||||
|
||||
//Input
|
||||
for (int i = 0; i < 6; i++)
|
||||
{
|
||||
cin >> Array[i];
|
||||
}
|
||||
|
||||
//Selection Sorting
|
||||
for (int i = 0; i < 6; i++)
|
||||
{
|
||||
int min = i;
|
||||
for (int j = i + 1; j < 6; j++)
|
||||
{
|
||||
if (Array[j] < Array[min])
|
||||
{
|
||||
min = j; //Finding the smallest number in Array
|
||||
}
|
||||
}
|
||||
int temp = Array[i];
|
||||
Array[i] = Array[min];
|
||||
Array[min] = temp;
|
||||
}
|
||||
|
||||
//Output
|
||||
cout << "\nSorted Array : ";
|
||||
for (int i = 0; i < 6; i++)
|
||||
{
|
||||
cout << Array[i] << "\t";
|
||||
}
|
||||
}
|
||||
@@ -1,45 +0,0 @@
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
int main()
|
||||
{
|
||||
int size = 10;
|
||||
int array[size];
|
||||
// Input
|
||||
cout << "\nHow many numbers do want to enter in unsorted array : ";
|
||||
cin >> size;
|
||||
cout << "\nEnter the numbers for unsorted array : ";
|
||||
for (int i = 0; i < size; i++)
|
||||
{
|
||||
cin >> array[i];
|
||||
}
|
||||
|
||||
// Sorting
|
||||
for (int i = size / 2; i > 0; i = i / 2)
|
||||
{
|
||||
for (int j = i; j < size; j++)
|
||||
{
|
||||
for (int k = j - i; k >= 0; k = k - i)
|
||||
{
|
||||
if (array[k] < array[k + i])
|
||||
{
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
int temp = array[k + i];
|
||||
array[k + i] = array[k];
|
||||
array[k] = temp;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Output
|
||||
cout << "\nSorted array : ";
|
||||
for (int i = 0; i < size; ++i)
|
||||
{
|
||||
cout << array[i] << "\t";
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -1,57 +0,0 @@
|
||||
//Returns the sorted vector after performing SlowSort
|
||||
//It is a sorting algorithm that is of humorous nature and not useful.
|
||||
//It's based on the principle of multiply and surrender, a tongue-in-cheek joke of divide and conquer.
|
||||
//It was published in 1986 by Andrei Broder and Jorge Stolfi in their paper Pessimal Algorithms and Simplexity Analysis.
|
||||
//This algorithm multiplies a single problem into multiple subproblems
|
||||
//It is interesting because it is provably the least efficient sorting algorithm that can be built asymptotically,
|
||||
//and with the restriction that such an algorithm, while being slow, must still all the time be working towards a result.
|
||||
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
void SlowSort(int a[], int i, int j)
|
||||
{
|
||||
if (i >= j)
|
||||
return;
|
||||
int m = i + (j - i) / 2; //midpoint, implemented this way to avoid overflow
|
||||
int temp;
|
||||
SlowSort(a, i, m);
|
||||
SlowSort(a, m + 1, j);
|
||||
if (a[j] < a[m])
|
||||
{
|
||||
temp = a[j]; //swapping a[j] & a[m]
|
||||
a[j] = a[m];
|
||||
a[m] = temp;
|
||||
}
|
||||
SlowSort(a, i, j - 1);
|
||||
}
|
||||
|
||||
//Sample Main function
|
||||
|
||||
int main()
|
||||
{
|
||||
int size;
|
||||
cout << "\nEnter the number of elements : ";
|
||||
|
||||
cin >> size;
|
||||
|
||||
int arr[size];
|
||||
|
||||
cout << "\nEnter the unsorted elements : ";
|
||||
|
||||
for (int i = 0; i < size; ++i)
|
||||
{
|
||||
cout << "\n";
|
||||
cin >> arr[i];
|
||||
}
|
||||
|
||||
SlowSort(arr, 0, size);
|
||||
|
||||
cout << "Sorted array\n";
|
||||
|
||||
for (int i = 0; i < size; ++i)
|
||||
{
|
||||
cout << arr[i] << " ";
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
116
Tim Sort.cpp
@@ -1,116 +0,0 @@
|
||||
// C++ program to perform TimSort.
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
const int RUN = 32;
|
||||
|
||||
// this function sorts array from left index to to right index which is of size atmost RUN
|
||||
void insertionSort(int arr[], int left, int right)
|
||||
{
|
||||
for (int i = left + 1; i <= right; i++)
|
||||
{
|
||||
int temp = arr[i];
|
||||
int j = i - 1;
|
||||
while (arr[j] > temp && j >= left)
|
||||
{
|
||||
arr[j+1] = arr[j];
|
||||
j--;
|
||||
}
|
||||
arr[j+1] = temp;
|
||||
}
|
||||
}
|
||||
|
||||
// merge function merges the sorted runs
|
||||
void merge(int arr[], int l, int m, int r)
|
||||
{
|
||||
// original array is broken in two parts, left and right array
|
||||
int len1 = m - l + 1, len2 = r - m;
|
||||
int left[len1], right[len2];
|
||||
for (int i = 0; i < len1; i++)
|
||||
left[i] = arr[l + i];
|
||||
for (int i = 0; i < len2; i++)
|
||||
right[i] = arr[m + 1 + i];
|
||||
|
||||
int i = 0;
|
||||
int j = 0;
|
||||
int k = l;
|
||||
|
||||
// after comparing, we merge those two array in larger sub array
|
||||
while (i < len1 && j < len2)
|
||||
{
|
||||
if (left[i] <= right[j])
|
||||
{
|
||||
arr[k] = left[i];
|
||||
i++;
|
||||
}
|
||||
else
|
||||
{
|
||||
arr[k] = right[j];
|
||||
j++;
|
||||
}
|
||||
k++;
|
||||
}
|
||||
|
||||
// copy remaining elements of left, if any
|
||||
while (i < len1)
|
||||
{
|
||||
arr[k] = left[i];
|
||||
k++;
|
||||
i++;
|
||||
}
|
||||
|
||||
// copy remaining element of right, if any
|
||||
while (j < len2)
|
||||
{
|
||||
arr[k] = right[j];
|
||||
k++;
|
||||
j++;
|
||||
}
|
||||
}
|
||||
|
||||
// iterative Timsort function to sort the array[0...n-1] (similar to merge sort)
|
||||
void timSort(int arr[], int n)
|
||||
{
|
||||
// Sort individual subarrays of size RUN
|
||||
for (int i = 0; i < n; i+=RUN)
|
||||
insertionSort(arr, i, min((i+31), (n-1)));
|
||||
|
||||
// start merging from size RUN (or 32). It will merge to form size 64, then 128, 256 and so on ....
|
||||
for (int size = RUN; size < n; size = 2*size)
|
||||
{
|
||||
// pick starting point of left sub array. We are going to merge arr[left..left+size-1] and arr[left+size, left+2*size-1]
|
||||
// After every merge, we increase left by 2*size
|
||||
for (int left = 0; left < n; left += 2*size)
|
||||
{
|
||||
// find ending point of left sub array
|
||||
// mid+1 is starting point of right sub array
|
||||
int mid = left + size - 1;
|
||||
int right = min((left + 2*size - 1), (n-1));
|
||||
|
||||
// merge sub array arr[left.....mid] & arr[mid+1....right]
|
||||
merge(arr, left, mid, right);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// utility function to print the Array
|
||||
void printArray(int arr[], int n)
|
||||
{
|
||||
for (int i = 0; i < n; i++)
|
||||
printf("%d ", arr[i]);
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
// Driver program to test above function
|
||||
int main()
|
||||
{
|
||||
int arr[] = {5, 21, 7, 23, 19};
|
||||
int n = sizeof(arr)/sizeof(arr[0]);
|
||||
printf("Given Array is\n");
|
||||
printArray(arr, n);
|
||||
|
||||
timSort(arr, n);
|
||||
|
||||
printf("After Sorting Array is\n");
|
||||
printArray(arr, n);
|
||||
return 0;
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
// C++ program to sort an array using bucket sort
|
||||
#include <iostream>
|
||||
#include <algorithm>
|
||||
#include <vector>
|
||||
using namespace std;
|
||||
|
||||
// Function to sort arr[] of size n using bucket sort
|
||||
void bucketSort(float arr[], int n)
|
||||
{
|
||||
// 1) Create n empty buckets
|
||||
vector<float> b[n];
|
||||
|
||||
// 2) Put array elements in different buckets
|
||||
for (int i = 0; i < n; i++)
|
||||
{
|
||||
int bi = n * arr[i]; // Index in bucket
|
||||
b[bi].push_back(arr[i]);
|
||||
}
|
||||
|
||||
// 3) Sort individual buckets
|
||||
for (int i = 0; i < n; i++)
|
||||
sort(b[i].begin(), b[i].end());
|
||||
|
||||
// 4) Concatenate all buckets into arr[]
|
||||
int index = 0;
|
||||
for (int i = 0; i < n; i++)
|
||||
for (int j = 0; j < b[i].size(); j++)
|
||||
arr[index++] = b[i][j];
|
||||
}
|
||||
|
||||
/* Driver program to test above funtion */
|
||||
int main()
|
||||
{
|
||||
float arr[] = {0.897, 0.565, 0.656, 0.1234, 0.665, 0.3434};
|
||||
int n = sizeof(arr) / sizeof(arr[0]);
|
||||
bucketSort(arr, n);
|
||||
|
||||
cout << "Sorted array is \n";
|
||||
for (int i = 0; i < n; i++)
|
||||
cout << arr[i] << " ";
|
||||
return 0;
|
||||
}
|
||||
59
combsort.cpp
@@ -1,59 +0,0 @@
|
||||
//Kind of better version of Bubble sort.
|
||||
//While Bubble sort is comparering adjacent value, Combsort is using gap larger than 1
|
||||
//Best case: O(n)
|
||||
//Worst case: O(n ^ 2)
|
||||
|
||||
#include <iostream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
int a[100005];
|
||||
int n;
|
||||
|
||||
int FindNextGap(int x)
|
||||
{
|
||||
x = (x * 10) / 13;
|
||||
|
||||
return max(1, x);
|
||||
}
|
||||
|
||||
void CombSort(int a[], int l, int r)
|
||||
{
|
||||
//Init gap
|
||||
int gap = n;
|
||||
|
||||
//Initialize swapped as true to make sure that loop runs
|
||||
bool swapped = true;
|
||||
|
||||
//Keep running until gap = 1 or none elements were swapped
|
||||
while (gap != 1 || swapped)
|
||||
{
|
||||
//Find next gap
|
||||
gap = FindNextGap(gap);
|
||||
|
||||
swapped = false;
|
||||
|
||||
// Compare all elements with current gap
|
||||
for (int i = l; i <= r - gap; ++i)
|
||||
{
|
||||
if (a[i] > a[i + gap])
|
||||
{
|
||||
swap(a[i], a[i + gap]);
|
||||
swapped = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
cin >> n;
|
||||
for (int i = 1; i <= n; ++i)
|
||||
cin >> a[i];
|
||||
|
||||
CombSort(a, 1, n);
|
||||
|
||||
for (int i = 1; i <= n; ++i)
|
||||
cout << a[i] << ' ';
|
||||
return 0;
|
||||
}
|
||||
374
doxy.txt
@@ -1,374 +0,0 @@
|
||||
# Doxyfile 1.8.13
|
||||
#This configuration file has been generated from Doxygen template.
|
||||
#---------------------------------------------------------------------------
|
||||
# Project related configuration options
|
||||
#---------------------------------------------------------------------------
|
||||
DOXYFILE_ENCODING = UTF-8
|
||||
PROJECT_NAME = "My Project"
|
||||
PROJECT_NUMBER =
|
||||
PROJECT_BRIEF =
|
||||
PROJECT_LOGO =
|
||||
OUTPUT_DIRECTORY =
|
||||
CREATE_SUBDIRS = NO
|
||||
ALLOW_UNICODE_NAMES = NO
|
||||
OUTPUT_LANGUAGE = English
|
||||
BRIEF_MEMBER_DESC = YES
|
||||
REPEAT_BRIEF = YES
|
||||
ABBREVIATE_BRIEF = "The $name class" \
|
||||
"The $name widget" \
|
||||
"The $name file" \
|
||||
is \
|
||||
provides \
|
||||
specifies \
|
||||
contains \
|
||||
represents \
|
||||
a \
|
||||
an \
|
||||
the
|
||||
ALWAYS_DETAILED_SEC = NO
|
||||
INLINE_INHERITED_MEMB = NO
|
||||
FULL_PATH_NAMES = YES
|
||||
STRIP_FROM_PATH =
|
||||
STRIP_FROM_INC_PATH =
|
||||
SHORT_NAMES = NO
|
||||
JAVADOC_AUTOBRIEF = NO
|
||||
QT_AUTOBRIEF = NO
|
||||
MULTILINE_CPP_IS_BRIEF = NO
|
||||
INHERIT_DOCS = YES
|
||||
SEPARATE_MEMBER_PAGES = NO
|
||||
TAB_SIZE = 4
|
||||
ALIASES =
|
||||
TCL_SUBST =
|
||||
OPTIMIZE_OUTPUT_FOR_C = NO
|
||||
OPTIMIZE_OUTPUT_JAVA = NO
|
||||
OPTIMIZE_FOR_FORTRAN = NO
|
||||
OPTIMIZE_OUTPUT_VHDL = NO
|
||||
EXTENSION_MAPPING =
|
||||
MARKDOWN_SUPPORT = YES
|
||||
TOC_INCLUDE_HEADINGS = 0
|
||||
AUTOLINK_SUPPORT = YES
|
||||
BUILTIN_STL_SUPPORT = NO
|
||||
CPP_CLI_SUPPORT = NO
|
||||
SIP_SUPPORT = NO
|
||||
IDL_PROPERTY_SUPPORT = YES
|
||||
DISTRIBUTE_GROUP_DOC = NO
|
||||
GROUP_NESTED_COMPOUNDS = NO
|
||||
SUBGROUPING = YES
|
||||
INLINE_GROUPED_CLASSES = NO
|
||||
INLINE_SIMPLE_STRUCTS = NO
|
||||
TYPEDEF_HIDES_STRUCT = NO
|
||||
LOOKUP_CACHE_SIZE = 0
|
||||
#---------------------------------------------------------------------------
|
||||
# Build related configuration options
|
||||
#---------------------------------------------------------------------------
|
||||
EXTRACT_ALL = NO
|
||||
EXTRACT_PRIVATE = NO
|
||||
EXTRACT_PACKAGE = NO
|
||||
EXTRACT_STATIC = NO
|
||||
EXTRACT_LOCAL_CLASSES = YES
|
||||
EXTRACT_LOCAL_METHODS = NO
|
||||
EXTRACT_ANON_NSPACES = NO
|
||||
HIDE_UNDOC_MEMBERS = NO
|
||||
HIDE_UNDOC_CLASSES = NO
|
||||
HIDE_FRIEND_COMPOUNDS = NO
|
||||
HIDE_IN_BODY_DOCS = NO
|
||||
INTERNAL_DOCS = NO
|
||||
CASE_SENSE_NAMES = YES
|
||||
HIDE_SCOPE_NAMES = NO
|
||||
HIDE_COMPOUND_REFERENCE= NO
|
||||
SHOW_INCLUDE_FILES = YES
|
||||
SHOW_GROUPED_MEMB_INC = NO
|
||||
FORCE_LOCAL_INCLUDES = NO
|
||||
INLINE_INFO = YES
|
||||
SORT_MEMBER_DOCS = YES
|
||||
SORT_BRIEF_DOCS = NO
|
||||
SORT_MEMBERS_CTORS_1ST = NO
|
||||
SORT_GROUP_NAMES = NO
|
||||
SORT_BY_SCOPE_NAME = NO
|
||||
STRICT_PROTO_MATCHING = NO
|
||||
GENERATE_TODOLIST = YES
|
||||
GENERATE_TESTLIST = YES
|
||||
GENERATE_BUGLIST = YES
|
||||
GENERATE_DEPRECATEDLIST= YES
|
||||
ENABLED_SECTIONS =
|
||||
MAX_INITIALIZER_LINES = 30
|
||||
SHOW_USED_FILES = YES
|
||||
SHOW_FILES = YES
|
||||
SHOW_NAMESPACES = YES
|
||||
FILE_VERSION_FILTER =
|
||||
LAYOUT_FILE =
|
||||
CITE_BIB_FILES =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to warning and progress messages
|
||||
#---------------------------------------------------------------------------
|
||||
QUIET = NO
|
||||
WARNINGS = YES
|
||||
WARN_IF_UNDOCUMENTED = YES
|
||||
WARN_IF_DOC_ERROR = YES
|
||||
WARN_NO_PARAMDOC = NO
|
||||
WARN_AS_ERROR = NO
|
||||
WARN_FORMAT = "$file:$line: $text"
|
||||
WARN_LOGFILE =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the input files
|
||||
#---------------------------------------------------------------------------
|
||||
INPUT =
|
||||
INPUT_ENCODING = UTF-8
|
||||
FILE_PATTERNS = *.c \
|
||||
*.cc \
|
||||
*.cxx \
|
||||
*.cpp \
|
||||
*.c++ \
|
||||
*.java \
|
||||
*.ii \
|
||||
*.ixx \
|
||||
*.ipp \
|
||||
*.i++ \
|
||||
*.inl \
|
||||
*.idl \
|
||||
*.ddl \
|
||||
*.odl \
|
||||
*.h \
|
||||
*.hh \
|
||||
*.hxx \
|
||||
*.hpp \
|
||||
*.h++ \
|
||||
*.cs \
|
||||
*.d \
|
||||
*.php \
|
||||
*.php4 \
|
||||
*.php5 \
|
||||
*.phtml \
|
||||
*.inc \
|
||||
*.m \
|
||||
*.markdown \
|
||||
*.md \
|
||||
*.mm \
|
||||
*.dox \
|
||||
*.py \
|
||||
*.pyw \
|
||||
*.f90 \
|
||||
*.f95 \
|
||||
*.f03 \
|
||||
*.f08 \
|
||||
*.f \
|
||||
*.for \
|
||||
*.tcl \
|
||||
*.vhd \
|
||||
*.vhdl \
|
||||
*.ucf \
|
||||
*.qsf
|
||||
RECURSIVE = NO
|
||||
EXCLUDE =
|
||||
EXCLUDE_SYMLINKS = NO
|
||||
EXCLUDE_PATTERNS =
|
||||
EXCLUDE_SYMBOLS =
|
||||
EXAMPLE_PATH =
|
||||
EXAMPLE_PATTERNS = *
|
||||
EXAMPLE_RECURSIVE = NO
|
||||
IMAGE_PATH =
|
||||
INPUT_FILTER =
|
||||
FILTER_PATTERNS =
|
||||
FILTER_SOURCE_FILES = NO
|
||||
FILTER_SOURCE_PATTERNS =
|
||||
USE_MDFILE_AS_MAINPAGE =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to source browsing
|
||||
#---------------------------------------------------------------------------
|
||||
SOURCE_BROWSER = NO
|
||||
INLINE_SOURCES = NO
|
||||
STRIP_CODE_COMMENTS = YES
|
||||
REFERENCED_BY_RELATION = NO
|
||||
REFERENCES_RELATION = NO
|
||||
REFERENCES_LINK_SOURCE = YES
|
||||
SOURCE_TOOLTIPS = YES
|
||||
USE_HTAGS = NO
|
||||
VERBATIM_HEADERS = YES
|
||||
CLANG_ASSISTED_PARSING = NO
|
||||
CLANG_OPTIONS =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the alphabetical class index
|
||||
#---------------------------------------------------------------------------
|
||||
ALPHABETICAL_INDEX = YES
|
||||
COLS_IN_ALPHA_INDEX = 5
|
||||
IGNORE_PREFIX =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the HTML output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_HTML = YES
|
||||
HTML_OUTPUT = html
|
||||
HTML_FILE_EXTENSION = .html
|
||||
HTML_HEADER =
|
||||
HTML_FOOTER =
|
||||
HTML_STYLESHEET =
|
||||
HTML_EXTRA_STYLESHEET =
|
||||
HTML_EXTRA_FILES =
|
||||
HTML_COLORSTYLE_HUE = 220
|
||||
HTML_COLORSTYLE_SAT = 100
|
||||
HTML_COLORSTYLE_GAMMA = 80
|
||||
HTML_TIMESTAMP = NO
|
||||
HTML_DYNAMIC_SECTIONS = NO
|
||||
HTML_INDEX_NUM_ENTRIES = 100
|
||||
GENERATE_DOCSET = NO
|
||||
DOCSET_FEEDNAME = "Doxygen generated docs"
|
||||
DOCSET_BUNDLE_ID = org.doxygen.Project
|
||||
DOCSET_PUBLISHER_ID = org.doxygen.Publisher
|
||||
DOCSET_PUBLISHER_NAME = Publisher
|
||||
GENERATE_HTMLHELP = NO
|
||||
CHM_FILE =
|
||||
HHC_LOCATION =
|
||||
GENERATE_CHI = NO
|
||||
CHM_INDEX_ENCODING =
|
||||
BINARY_TOC = NO
|
||||
TOC_EXPAND = NO
|
||||
GENERATE_QHP = NO
|
||||
QCH_FILE =
|
||||
QHP_NAMESPACE = org.doxygen.Project
|
||||
QHP_VIRTUAL_FOLDER = doc
|
||||
QHP_CUST_FILTER_NAME =
|
||||
QHP_CUST_FILTER_ATTRS =
|
||||
QHP_SECT_FILTER_ATTRS =
|
||||
QHG_LOCATION =
|
||||
GENERATE_ECLIPSEHELP = NO
|
||||
ECLIPSE_DOC_ID = org.doxygen.Project
|
||||
DISABLE_INDEX = NO
|
||||
GENERATE_TREEVIEW = NO
|
||||
ENUM_VALUES_PER_LINE = 4
|
||||
TREEVIEW_WIDTH = 250
|
||||
EXT_LINKS_IN_WINDOW = NO
|
||||
FORMULA_FONTSIZE = 10
|
||||
FORMULA_TRANSPARENT = YES
|
||||
USE_MATHJAX = NO
|
||||
MATHJAX_FORMAT = HTML-CSS
|
||||
MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
|
||||
MATHJAX_EXTENSIONS =
|
||||
MATHJAX_CODEFILE =
|
||||
SEARCHENGINE = YES
|
||||
SERVER_BASED_SEARCH = NO
|
||||
EXTERNAL_SEARCH = NO
|
||||
SEARCHENGINE_URL =
|
||||
SEARCHDATA_FILE = searchdata.xml
|
||||
EXTERNAL_SEARCH_ID =
|
||||
EXTRA_SEARCH_MAPPINGS =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the LaTeX output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_LATEX = NO
|
||||
LATEX_OUTPUT = latex
|
||||
LATEX_CMD_NAME = latex
|
||||
MAKEINDEX_CMD_NAME = makeindex
|
||||
COMPACT_LATEX = NO
|
||||
PAPER_TYPE = a4
|
||||
EXTRA_PACKAGES =
|
||||
LATEX_HEADER =
|
||||
LATEX_FOOTER =
|
||||
LATEX_EXTRA_STYLESHEET =
|
||||
LATEX_EXTRA_FILES =
|
||||
PDF_HYPERLINKS = YES
|
||||
USE_PDFLATEX = YES
|
||||
LATEX_BATCHMODE = NO
|
||||
LATEX_HIDE_INDICES = NO
|
||||
LATEX_SOURCE_CODE = NO
|
||||
LATEX_BIB_STYLE = plain
|
||||
LATEX_TIMESTAMP = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the RTF output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_RTF = NO
|
||||
RTF_OUTPUT = rtf
|
||||
COMPACT_RTF = NO
|
||||
RTF_HYPERLINKS = NO
|
||||
RTF_STYLESHEET_FILE =
|
||||
RTF_EXTENSIONS_FILE =
|
||||
RTF_SOURCE_CODE = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the man page output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_MAN = NO
|
||||
MAN_OUTPUT = man
|
||||
MAN_EXTENSION = .3
|
||||
MAN_SUBDIR =
|
||||
MAN_LINKS = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the XML output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_XML = NO
|
||||
XML_OUTPUT = xml
|
||||
XML_PROGRAMLISTING = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the DOCBOOK output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_DOCBOOK = NO
|
||||
DOCBOOK_OUTPUT = docbook
|
||||
DOCBOOK_PROGRAMLISTING = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options for the AutoGen Definitions output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_AUTOGEN_DEF = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the Perl module output
|
||||
#---------------------------------------------------------------------------
|
||||
GENERATE_PERLMOD = NO
|
||||
PERLMOD_LATEX = NO
|
||||
PERLMOD_PRETTY = YES
|
||||
PERLMOD_MAKEVAR_PREFIX =
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the preprocessor
|
||||
#---------------------------------------------------------------------------
|
||||
ENABLE_PREPROCESSING = YES
|
||||
MACRO_EXPANSION = NO
|
||||
EXPAND_ONLY_PREDEF = NO
|
||||
SEARCH_INCLUDES = YES
|
||||
INCLUDE_PATH =
|
||||
INCLUDE_FILE_PATTERNS =
|
||||
PREDEFINED =
|
||||
EXPAND_AS_DEFINED =
|
||||
SKIP_FUNCTION_MACROS = YES
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to external references
|
||||
#---------------------------------------------------------------------------
|
||||
TAGFILES =
|
||||
GENERATE_TAGFILE =
|
||||
ALLEXTERNALS = NO
|
||||
EXTERNAL_GROUPS = YES
|
||||
EXTERNAL_PAGES = YES
|
||||
PERL_PATH = /usr/bin/perl
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the dot tool
|
||||
#---------------------------------------------------------------------------
|
||||
CLASS_DIAGRAMS = YES
|
||||
MSCGEN_PATH =
|
||||
DIA_PATH =
|
||||
HIDE_UNDOC_RELATIONS = YES
|
||||
HAVE_DOT = YES
|
||||
DOT_NUM_THREADS = 0
|
||||
DOT_FONTNAME = Helvetica
|
||||
DOT_FONTSIZE = 10
|
||||
DOT_FONTPATH =
|
||||
CLASS_GRAPH = YES
|
||||
COLLABORATION_GRAPH = YES
|
||||
GROUP_GRAPHS = YES
|
||||
UML_LOOK = NO
|
||||
UML_LIMIT_NUM_FIELDS = 10
|
||||
TEMPLATE_RELATIONS = NO
|
||||
INCLUDE_GRAPH = YES
|
||||
INCLUDED_BY_GRAPH = YES
|
||||
CALL_GRAPH = NO
|
||||
CALLER_GRAPH = NO
|
||||
GRAPHICAL_HIERARCHY = YES
|
||||
DIRECTORY_GRAPH = YES
|
||||
DOT_IMAGE_FORMAT = png
|
||||
INTERACTIVE_SVG = NO
|
||||
DOT_PATH =
|
||||
DOTFILE_DIRS =
|
||||
MSCFILE_DIRS =
|
||||
DIAFILE_DIRS =
|
||||
PLANTUML_JAR_PATH =
|
||||
PLANTUML_CFG_FILE =
|
||||
PLANTUML_INCLUDE_PATH =
|
||||
DOT_GRAPH_MAX_NODES = 50
|
||||
MAX_DOT_GRAPH_DEPTH = 0
|
||||
DOT_TRANSPARENT = NO
|
||||
DOT_MULTI_TARGETS = NO
|
||||
GENERATE_LEGEND = YES
|
||||
DOT_CLEANUP = YES
|
||||
@@ -1,52 +0,0 @@
|
||||
#include <algorithm>
|
||||
#include <iostream>
|
||||
|
||||
void heapify(int *a, int i, int n) {
|
||||
int largest = i;
|
||||
const int l = 2 * i + 1;
|
||||
const int r = 2 * i + 2;
|
||||
|
||||
if (l < n && a[l] > a[largest])
|
||||
largest = l;
|
||||
|
||||
if (r < n && a[r] > a[largest])
|
||||
largest = r;
|
||||
|
||||
if (largest != i) {
|
||||
std::swap(a[i], a[largest]);
|
||||
heapify(a, n, largest);
|
||||
}
|
||||
}
|
||||
|
||||
void heapsort(int *a, int n) {
|
||||
for (int i = n - 1; i >= 0; --i) {
|
||||
std::swap(a[0], a[i]);
|
||||
heapify(a, 0, i);
|
||||
}
|
||||
}
|
||||
|
||||
void build_maxheap(int *a, int n) {
|
||||
for (int i = n / 2 - 1; i >= 0; --i) {
|
||||
heapify(a, i, n);
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
int n;
|
||||
std::cout << "Enter number of elements of array\n";
|
||||
std::cin >> n;
|
||||
int a[20];
|
||||
for (int i = 0; i < n; ++i) {
|
||||
std::cout << "Enter Element " << i << std::endl;
|
||||
std::cin >> a[i];
|
||||
}
|
||||
|
||||
build_maxheap(a, n);
|
||||
heapsort(a, n);
|
||||
std::cout << "Sorted Output\n";
|
||||
for (int i = 0; i < n; ++i) {
|
||||
std::cout << a[i] << std::endl;
|
||||
}
|
||||
|
||||
std::getchar();
|
||||
}
|
||||
BIN
html/bc_s.png
|
Before Width: | Height: | Size: 676 B |
BIN
html/bdwn.png
|
Before Width: | Height: | Size: 147 B |
BIN
html/closed.png
|
Before Width: | Height: | Size: 132 B |
BIN
html/doc.png
|
Before Width: | Height: | Size: 746 B |
1730
html/doxygen.css
BIN
html/doxygen.png
|
Before Width: | Height: | Size: 3.7 KiB |
@@ -1,121 +0,0 @@
|
||||
/*
|
||||
@licstart The following is the entire license notice for the JavaScript code in this file.
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (C) 1997-2020 by Dimitri van Heesch
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
|
||||
and associated documentation files (the "Software"), to deal in the Software without restriction,
|
||||
including without limitation the rights to use, copy, modify, merge, publish, distribute,
|
||||
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or
|
||||
substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
|
||||
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
@licend The above is the entire license notice for the JavaScript code in this file
|
||||
*/
|
||||
function toggleVisibility(linkObj)
|
||||
{
|
||||
var base = $(linkObj).attr('id');
|
||||
var summary = $('#'+base+'-summary');
|
||||
var content = $('#'+base+'-content');
|
||||
var trigger = $('#'+base+'-trigger');
|
||||
var src=$(trigger).attr('src');
|
||||
if (content.is(':visible')===true) {
|
||||
content.hide();
|
||||
summary.show();
|
||||
$(linkObj).addClass('closed').removeClass('opened');
|
||||
$(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
|
||||
} else {
|
||||
content.show();
|
||||
summary.hide();
|
||||
$(linkObj).removeClass('closed').addClass('opened');
|
||||
$(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function updateStripes()
|
||||
{
|
||||
$('table.directory tr').
|
||||
removeClass('even').filter(':visible:even').addClass('even');
|
||||
}
|
||||
|
||||
function toggleLevel(level)
|
||||
{
|
||||
$('table.directory tr').each(function() {
|
||||
var l = this.id.split('_').length-1;
|
||||
var i = $('#img'+this.id.substring(3));
|
||||
var a = $('#arr'+this.id.substring(3));
|
||||
if (l<level+1) {
|
||||
i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
|
||||
a.html('▼');
|
||||
$(this).show();
|
||||
} else if (l==level+1) {
|
||||
i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
|
||||
a.html('►');
|
||||
$(this).show();
|
||||
} else {
|
||||
$(this).hide();
|
||||
}
|
||||
});
|
||||
updateStripes();
|
||||
}
|
||||
|
||||
function toggleFolder(id)
|
||||
{
|
||||
// the clicked row
|
||||
var currentRow = $('#row_'+id);
|
||||
|
||||
// all rows after the clicked row
|
||||
var rows = currentRow.nextAll("tr");
|
||||
|
||||
var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
|
||||
|
||||
// only match elements AFTER this one (can't hide elements before)
|
||||
var childRows = rows.filter(function() { return this.id.match(re); });
|
||||
|
||||
// first row is visible we are HIDING
|
||||
if (childRows.filter(':first').is(':visible')===true) {
|
||||
// replace down arrow by right arrow for current row
|
||||
var currentRowSpans = currentRow.find("span");
|
||||
currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
|
||||
currentRowSpans.filter(".arrow").html('►');
|
||||
rows.filter("[id^=row_"+id+"]").hide(); // hide all children
|
||||
} else { // we are SHOWING
|
||||
// replace right arrow by down arrow for current row
|
||||
var currentRowSpans = currentRow.find("span");
|
||||
currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
|
||||
currentRowSpans.filter(".arrow").html('▼');
|
||||
// replace down arrows by right arrows for child rows
|
||||
var childRowsSpans = childRows.find("span");
|
||||
childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
|
||||
childRowsSpans.filter(".arrow").html('►');
|
||||
childRows.show(); //show all children
|
||||
}
|
||||
updateStripes();
|
||||
}
|
||||
|
||||
|
||||
function toggleInherit(id)
|
||||
{
|
||||
var rows = $('tr.inherit.'+id);
|
||||
var img = $('tr.inherit_header.'+id+' img');
|
||||
var src = $(img).attr('src');
|
||||
if (rows.filter(':first').is(':visible')===true) {
|
||||
rows.css('display','none');
|
||||
$(img).attr('src',src.substring(0,src.length-8)+'closed.png');
|
||||
} else {
|
||||
rows.css('display','table-row'); // using show() causes jump in firefox
|
||||
$(img).attr('src',src.substring(0,src.length-10)+'open.png');
|
||||
}
|
||||
}
|
||||
/* @license-end */
|
||||
@@ -1,81 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.18"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>My Project: File List</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">My Project
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.18 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">File List</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div class="textblock">Here is a list of all documented files with brief descriptions:</div><div class="directory">
|
||||
<table class="directory">
|
||||
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icondoc"></span><a class="el" href="non__recursive__merge__sort_8cpp.html" target="_self">non_recursive_merge_sort.cpp</a></td><td class="desc"></td></tr>
|
||||
</table>
|
||||
</div><!-- directory -->
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.18
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
|
Before Width: | Height: | Size: 616 B |
|
Before Width: | Height: | Size: 597 B |
@@ -1,80 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.18"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>My Project: File Members</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">My Project
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.18 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="contents">
|
||||
<div class="textblock">Here is a list of all documented file members with links to the documentation:</div><ul>
|
||||
<li>merge()
|
||||
: <a class="el" href="non__recursive__merge__sort_8cpp.html#aee1ab42c3a838aa040efd8e784f4a9ab">non_recursive_merge_sort.cpp</a>
|
||||
</li>
|
||||
<li>non_recursive_merge_sort()
|
||||
: <a class="el" href="non__recursive__merge__sort_8cpp.html#a797be8541ef8748f02c5ef74b3523e4b">non_recursive_merge_sort.cpp</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.18
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,80 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.18"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>My Project: File Members</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">My Project
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.18 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="contents">
|
||||
 <ul>
|
||||
<li>merge()
|
||||
: <a class="el" href="non__recursive__merge__sort_8cpp.html#aee1ab42c3a838aa040efd8e784f4a9ab">non_recursive_merge_sort.cpp</a>
|
||||
</li>
|
||||
<li>non_recursive_merge_sort()
|
||||
: <a class="el" href="non__recursive__merge__sort_8cpp.html#a797be8541ef8748f02c5ef74b3523e4b">non_recursive_merge_sort.cpp</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.18
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,136 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.18"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>My Project: Graph Legend</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">My Project
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.18 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">Graph Legend</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<p>This page explains how to interpret the graphs that are generated by doxygen.</p>
|
||||
<p>Consider the following example: </p><div class="fragment"><div class="line"><span class="comment">/*! Invisible class because of truncation */</span></div>
|
||||
<div class="line"><span class="keyword">class </span>Invisible { };</div>
|
||||
<div class="line"><span class="comment"></span> </div>
|
||||
<div class="line"><span class="comment">/*! Truncated class, inheritance relation is hidden */</span></div>
|
||||
<div class="line"><span class="keyword">class </span>Truncated : <span class="keyword">public</span> Invisible { };</div>
|
||||
<div class="line"> </div>
|
||||
<div class="line"><span class="comment">/* Class not documented with doxygen comments */</span></div>
|
||||
<div class="line"><span class="keyword">class </span>Undocumented { };</div>
|
||||
<div class="line"><span class="comment"></span> </div>
|
||||
<div class="line"><span class="comment">/*! Class that is inherited using public inheritance */</span></div>
|
||||
<div class="line"><span class="keyword">class </span>PublicBase : <span class="keyword">public</span> Truncated { };</div>
|
||||
<div class="line"><span class="comment"></span> </div>
|
||||
<div class="line"><span class="comment">/*! A template class */</span></div>
|
||||
<div class="line"><span class="keyword">template</span><<span class="keyword">class</span> T> <span class="keyword">class </span>Templ { };</div>
|
||||
<div class="line"><span class="comment"></span> </div>
|
||||
<div class="line"><span class="comment">/*! Class that is inherited using protected inheritance */</span></div>
|
||||
<div class="line"><span class="keyword">class </span>ProtectedBase { };</div>
|
||||
<div class="line"><span class="comment"></span> </div>
|
||||
<div class="line"><span class="comment">/*! Class that is inherited using private inheritance */</span></div>
|
||||
<div class="line"><span class="keyword">class </span>PrivateBase { };</div>
|
||||
<div class="line"><span class="comment"></span> </div>
|
||||
<div class="line"><span class="comment">/*! Class that is used by the Inherited class */</span></div>
|
||||
<div class="line"><span class="keyword">class </span>Used { };</div>
|
||||
<div class="line"><span class="comment"></span> </div>
|
||||
<div class="line"><span class="comment">/*! Super class that inherits a number of other classes */</span></div>
|
||||
<div class="line"><span class="keyword">class </span>Inherited : <span class="keyword">public</span> PublicBase,</div>
|
||||
<div class="line"> <span class="keyword">protected</span> ProtectedBase,</div>
|
||||
<div class="line"> <span class="keyword">private</span> PrivateBase,</div>
|
||||
<div class="line"> <span class="keyword">public</span> Undocumented,</div>
|
||||
<div class="line"> <span class="keyword">public</span> Templ<int></div>
|
||||
<div class="line">{</div>
|
||||
<div class="line"> <span class="keyword">private</span>:</div>
|
||||
<div class="line"> Used *m_usedClass;</div>
|
||||
<div class="line">};</div>
|
||||
</div><!-- fragment --><p> This will result in the following graph:</p>
|
||||
<center><img src="graph_legend.png" alt="" class="inline"/></center><p>The boxes in the above graph have the following meaning: </p>
|
||||
<ul>
|
||||
<li>
|
||||
A filled gray box represents the struct or class for which the graph is generated. </li>
|
||||
<li>
|
||||
A box with a black border denotes a documented struct or class. </li>
|
||||
<li>
|
||||
A box with a gray border denotes an undocumented struct or class. </li>
|
||||
<li>
|
||||
A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries. </li>
|
||||
</ul>
|
||||
<p>The arrows have the following meaning: </p>
|
||||
<ul>
|
||||
<li>
|
||||
A dark blue arrow is used to visualize a public inheritance relation between two classes. </li>
|
||||
<li>
|
||||
A dark green arrow is used for protected inheritance. </li>
|
||||
<li>
|
||||
A dark red arrow is used for private inheritance. </li>
|
||||
<li>
|
||||
A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible. </li>
|
||||
<li>
|
||||
A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance. </li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.18
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1 +0,0 @@
|
||||
f51bf6e9a10430aafef59831b08dcbfe
|
||||
|
Before Width: | Height: | Size: 17 KiB |
@@ -1,78 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.18"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>My Project: A demonstration of auto-generated documentation using Doxygen.</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">My Project
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.18 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */</script>
|
||||
<div id="main-nav"></div>
|
||||
</div><!-- top -->
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div class="PageDoc"><div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">A demonstration of auto-generated documentation using Doxygen. </div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div class="textblock"><p>Currently, it only creates output for <a class="el" href="non__recursive__merge__sort_8cpp.html">non_recursive_merge_sort.cpp</a>, but if it has proven its efficacy it can be expanded to other files. The configuration file is named doxy.txt and has been auto-generated too. </p>
|
||||
</div></div><!-- PageDoc -->
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.18
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
35
html/jquery.js
vendored
51
html/menu.js
@@ -1,51 +0,0 @@
|
||||
/*
|
||||
@licstart The following is the entire license notice for the JavaScript code in this file.
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (C) 1997-2020 by Dimitri van Heesch
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
|
||||
and associated documentation files (the "Software"), to deal in the Software without restriction,
|
||||
including without limitation the rights to use, copy, modify, merge, publish, distribute,
|
||||
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or
|
||||
substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
|
||||
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
@licend The above is the entire license notice for the JavaScript code in this file
|
||||
*/
|
||||
function initMenu(relPath,searchEnabled,serverSide,searchPage,search) {
|
||||
function makeTree(data,relPath) {
|
||||
var result='';
|
||||
if ('children' in data) {
|
||||
result+='<ul>';
|
||||
for (var i in data.children) {
|
||||
result+='<li><a href="'+relPath+data.children[i].url+'">'+
|
||||
data.children[i].text+'</a>'+
|
||||
makeTree(data.children[i],relPath)+'</li>';
|
||||
}
|
||||
result+='</ul>';
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
$('#main-nav').append(makeTree(menudata,relPath));
|
||||
$('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu');
|
||||
if (searchEnabled) {
|
||||
if (serverSide) {
|
||||
$('#main-menu').append('<li style="float:right"><div id="MSearchBox" class="MSearchBoxInactive"><div class="left"><form id="FSearchBox" action="'+relPath+searchPage+'" method="get"><img id="MSearchSelect" src="'+relPath+'search/mag.png" alt=""/><input type="text" id="MSearchField" name="query" value="'+search+'" size="20" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)"></form></div><div class="right"></div></div></li>');
|
||||
} else {
|
||||
$('#main-menu').append('<li style="float:right"><div id="MSearchBox" class="MSearchBoxInactive"><span class="left"><img id="MSearchSelect" src="'+relPath+'search/mag_sel.png" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" alt=""/><input type="text" id="MSearchField" value="'+search+'" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)" onkeyup="searchBox.OnSearchFieldChange(event)"/></span><span class="right"><a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="'+relPath+'search/close.png" alt=""/></a></span></div></li>');
|
||||
}
|
||||
}
|
||||
$('#main-menu').smartmenus();
|
||||
}
|
||||
/* @license-end */
|
||||
@@ -1,31 +0,0 @@
|
||||
/*
|
||||
@licstart The following is the entire license notice for the JavaScript code in this file.
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (C) 1997-2020 by Dimitri van Heesch
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
|
||||
and associated documentation files (the "Software"), to deal in the Software without restriction,
|
||||
including without limitation the rights to use, copy, modify, merge, publish, distribute,
|
||||
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or
|
||||
substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
|
||||
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
@licend The above is the entire license notice for the JavaScript code in this file
|
||||
*/
|
||||
var menudata={children:[
|
||||
{text:"Main Page",url:"index.html"},
|
||||
{text:"Files",url:"files.html",children:[
|
||||
{text:"File List",url:"files.html"},
|
||||
{text:"File Members",url:"globals.html",children:[
|
||||
{text:"All",url:"globals.html"},
|
||||
{text:"Functions",url:"globals_func.html"}]}]}]}
|
||||
BIN
html/nav_f.png
|
Before Width: | Height: | Size: 153 B |
BIN
html/nav_g.png
|
Before Width: | Height: | Size: 95 B |
BIN
html/nav_h.png
|
Before Width: | Height: | Size: 98 B |
@@ -1,296 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.18"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>My Project: non_recursive_merge_sort.cpp File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">My Project
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.18 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
<script type="text/javascript" src="menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
$(function() {
|
||||
initMenu('',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */</script>
|
||||
<div id="main-nav"></div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#func-members">Functions</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">non_recursive_merge_sort.cpp File Reference</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div class="textblock"><code>#include <cstddef></code><br />
|
||||
<code>#include <utility></code><br />
|
||||
<code>#include <iostream></code><br />
|
||||
</div><div class="textblock"><div class="dynheader">
|
||||
Include dependency graph for non_recursive_merge_sort.cpp:</div>
|
||||
<div class="dyncontent">
|
||||
<div class="center"><img src="non__recursive__merge__sort_8cpp__incl.png" border="0" usemap="#non__recursive__merge__sort_8cpp" alt=""/></div>
|
||||
<map name="non__recursive__merge__sort_8cpp" id="non__recursive__merge__sort_8cpp">
|
||||
<area shape="rect" title=" " alt="" coords="47,5,194,47"/>
|
||||
<area shape="rect" title=" " alt="" coords="5,95,71,121"/>
|
||||
<area shape="rect" title=" " alt="" coords="95,95,147,121"/>
|
||||
<area shape="rect" title=" " alt="" coords="171,95,243,121"/>
|
||||
</map>
|
||||
</div>
|
||||
</div><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
|
||||
Functions</h2></td></tr>
|
||||
<tr class="memitem:aee1ab42c3a838aa040efd8e784f4a9ab"><td class="memTemplParams" colspan="2">template<class Iterator > </td></tr>
|
||||
<tr class="memitem:aee1ab42c3a838aa040efd8e784f4a9ab"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="non__recursive__merge__sort_8cpp.html#aee1ab42c3a838aa040efd8e784f4a9ab">merge</a> (Iterator l, Iterator r, const Iterator e, char b[])</td></tr>
|
||||
<tr class="memdesc:aee1ab42c3a838aa040efd8e784f4a9ab"><td class="mdescLeft"> </td><td class="mdescRight">merges 2 sorted adjacent segments into a larger sorted segment <a href="non__recursive__merge__sort_8cpp.html#aee1ab42c3a838aa040efd8e784f4a9ab">More...</a><br /></td></tr>
|
||||
<tr class="separator:aee1ab42c3a838aa040efd8e784f4a9ab"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a797be8541ef8748f02c5ef74b3523e4b"><td class="memTemplParams" colspan="2">template<class Iterator > </td></tr>
|
||||
<tr class="memitem:a797be8541ef8748f02c5ef74b3523e4b"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="non__recursive__merge__sort_8cpp.html#a797be8541ef8748f02c5ef74b3523e4b">non_recursive_merge_sort</a> (const Iterator first, const Iterator last, const size_t n)</td></tr>
|
||||
<tr class="memdesc:a797be8541ef8748f02c5ef74b3523e4b"><td class="mdescLeft"> </td><td class="mdescRight">bottom-up merge sort which sorts elements in a non-decreasing order <a href="non__recursive__merge__sort_8cpp.html#a797be8541ef8748f02c5ef74b3523e4b">More...</a><br /></td></tr>
|
||||
<tr class="separator:a797be8541ef8748f02c5ef74b3523e4b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:af9efd27abc01f33180960004cd0009d9"><td class="memTemplParams" colspan="2">template<class Iterator > </td></tr>
|
||||
<tr class="memitem:af9efd27abc01f33180960004cd0009d9"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="non__recursive__merge__sort_8cpp.html#af9efd27abc01f33180960004cd0009d9">non_recursive_merge_sort</a> (const Iterator first, const size_t n)</td></tr>
|
||||
<tr class="memdesc:af9efd27abc01f33180960004cd0009d9"><td class="mdescLeft"> </td><td class="mdescRight">bottom-up merge sort which sorts elements in a non-decreasing order <a href="non__recursive__merge__sort_8cpp.html#af9efd27abc01f33180960004cd0009d9">More...</a><br /></td></tr>
|
||||
<tr class="separator:af9efd27abc01f33180960004cd0009d9"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a53daee11a3b0d34cf186b161edb77a5e"><td class="memTemplParams" colspan="2">template<class Iterator > </td></tr>
|
||||
<tr class="memitem:a53daee11a3b0d34cf186b161edb77a5e"><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="non__recursive__merge__sort_8cpp.html#a53daee11a3b0d34cf186b161edb77a5e">non_recursive_merge_sort</a> (const Iterator first, const Iterator last)</td></tr>
|
||||
<tr class="memdesc:a53daee11a3b0d34cf186b161edb77a5e"><td class="mdescLeft"> </td><td class="mdescRight">bottom-up merge sort which sorts elements in a non-decreasing order <a href="non__recursive__merge__sort_8cpp.html#a53daee11a3b0d34cf186b161edb77a5e">More...</a><br /></td></tr>
|
||||
<tr class="separator:a53daee11a3b0d34cf186b161edb77a5e"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a3c04138a5bfe5d72780bb7e82a18e627"><td class="memItemLeft" align="right" valign="top"><a id="a3c04138a5bfe5d72780bb7e82a18e627"></a>
|
||||
int </td><td class="memItemRight" valign="bottom"><b>main</b> (int argc, char **argv)</td></tr>
|
||||
<tr class="separator:a3c04138a5bfe5d72780bb7e82a18e627"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p>Copyright 2020 </p><dl class="section author"><dt>Author</dt><dd>Albirair</dd></dl>
|
||||
<p>A generic implementation of non-recursive merge sort. </p>
|
||||
</div><h2 class="groupheader">Function Documentation</h2>
|
||||
<a id="aee1ab42c3a838aa040efd8e784f4a9ab"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aee1ab42c3a838aa040efd8e784f4a9ab">◆ </a></span>merge()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<div class="memtemplate">
|
||||
template<class Iterator > </div>
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void merge </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">Iterator </td>
|
||||
<td class="paramname"><em>l</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">Iterator </td>
|
||||
<td class="paramname"><em>r</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">const Iterator </td>
|
||||
<td class="paramname"><em>e</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">char </td>
|
||||
<td class="paramname"><em>b</em>[] </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p>merges 2 sorted adjacent segments into a larger sorted segment </p>
|
||||
<p>best-case = worst-case = O(n) </p><dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">l</td><td>points to the left part </td></tr>
|
||||
<tr><td class="paramname">r</td><td>points to the right part, end of left part </td></tr>
|
||||
<tr><td class="paramname">e</td><td>points to end of right part </td></tr>
|
||||
<tr><td class="paramname">b</td><td>points at the buffer </td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a53daee11a3b0d34cf186b161edb77a5e"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a53daee11a3b0d34cf186b161edb77a5e">◆ </a></span>non_recursive_merge_sort() <span class="overload">[1/3]</span></h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<div class="memtemplate">
|
||||
template<class Iterator > </div>
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void non_recursive_merge_sort </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const Iterator </td>
|
||||
<td class="paramname"><em>first</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">const Iterator </td>
|
||||
<td class="paramname"><em>last</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p>bottom-up merge sort which sorts elements in a non-decreasing order </p>
|
||||
<dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">first</td><td>points to the first element </td></tr>
|
||||
<tr><td class="paramname">last</td><td>points to 1-step past the last element </td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a797be8541ef8748f02c5ef74b3523e4b"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a797be8541ef8748f02c5ef74b3523e4b">◆ </a></span>non_recursive_merge_sort() <span class="overload">[2/3]</span></h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<div class="memtemplate">
|
||||
template<class Iterator > </div>
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void non_recursive_merge_sort </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const Iterator </td>
|
||||
<td class="paramname"><em>first</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">const Iterator </td>
|
||||
<td class="paramname"><em>last</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">const size_t </td>
|
||||
<td class="paramname"><em>n</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p>bottom-up merge sort which sorts elements in a non-decreasing order </p>
|
||||
<p>sorts elements non-recursively by breaking them into small segments, merging adjacent segments into larger sorted segments, then increasing the sizes of segments by factors of 2 and repeating the same process. best-case = worst-case = O(n log(n)) </p><dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">first</td><td>points to the first element </td></tr>
|
||||
<tr><td class="paramname">last</td><td>points to 1-step past the last element </td></tr>
|
||||
<tr><td class="paramname">n</td><td>the number of elements </td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="af9efd27abc01f33180960004cd0009d9"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#af9efd27abc01f33180960004cd0009d9">◆ </a></span>non_recursive_merge_sort() <span class="overload">[3/3]</span></h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<div class="memtemplate">
|
||||
template<class Iterator > </div>
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void non_recursive_merge_sort </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const Iterator </td>
|
||||
<td class="paramname"><em>first</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">const size_t </td>
|
||||
<td class="paramname"><em>n</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p>bottom-up merge sort which sorts elements in a non-decreasing order </p>
|
||||
<dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">first</td><td>points to the first element </td></tr>
|
||||
<tr><td class="paramname">n</td><td>the number of elements </td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.18
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,6 +0,0 @@
|
||||
<map id="non_recursive_merge_sort.cpp" name="non_recursive_merge_sort.cpp">
|
||||
<area shape="rect" id="node1" title=" " alt="" coords="47,5,194,47"/>
|
||||
<area shape="rect" id="node2" title=" " alt="" coords="5,95,71,121"/>
|
||||
<area shape="rect" id="node3" title=" " alt="" coords="95,95,147,121"/>
|
||||
<area shape="rect" id="node4" title=" " alt="" coords="171,95,243,121"/>
|
||||
</map>
|
||||
@@ -1 +0,0 @@
|
||||
2f707f532efb4f72512822ffeb217e20
|
||||
|
Before Width: | Height: | Size: 7.1 KiB |
BIN
html/open.png
|
Before Width: | Height: | Size: 123 B |
@@ -1,36 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta name="generator" content="Doxygen 1.8.18"/>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="all_0.js"></script>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div id="SRResults"></div>
|
||||
<script type="text/javascript"><!--
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
createResults();
|
||||
/* @license-end */
|
||||
--></script>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
window.addEventListener("message", function(event) {
|
||||
if (event.data == "take_focus") {
|
||||
var elem = searchResults.NavNext(0);
|
||||
if (elem) elem.focus();
|
||||
}
|
||||
});
|
||||
/* @license-end */
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,4 +0,0 @@
|
||||
var searchData=
|
||||
[
|
||||
['a_20demonstration_20of_20auto_2dgenerated_20documentation_20using_20doxygen_2e_0',['A demonstration of auto-generated documentation using Doxygen.',['../index.html',1,'']]]
|
||||
];
|
||||
@@ -1,36 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta name="generator" content="Doxygen 1.8.18"/>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="all_1.js"></script>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div id="SRResults"></div>
|
||||
<script type="text/javascript"><!--
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
createResults();
|
||||
/* @license-end */
|
||||
--></script>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
window.addEventListener("message", function(event) {
|
||||
if (event.data == "take_focus") {
|
||||
var elem = searchResults.NavNext(0);
|
||||
if (elem) elem.focus();
|
||||
}
|
||||
});
|
||||
/* @license-end */
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,4 +0,0 @@
|
||||
var searchData=
|
||||
[
|
||||
['merge_1',['merge',['../non__recursive__merge__sort_8cpp.html#aee1ab42c3a838aa040efd8e784f4a9ab',1,'non_recursive_merge_sort.cpp']]]
|
||||
];
|
||||
@@ -1,36 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta name="generator" content="Doxygen 1.8.18"/>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="all_2.js"></script>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div id="SRResults"></div>
|
||||
<script type="text/javascript"><!--
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
createResults();
|
||||
/* @license-end */
|
||||
--></script>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
window.addEventListener("message", function(event) {
|
||||
if (event.data == "take_focus") {
|
||||
var elem = searchResults.NavNext(0);
|
||||
if (elem) elem.focus();
|
||||
}
|
||||
});
|
||||
/* @license-end */
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,5 +0,0 @@
|
||||
var searchData=
|
||||
[
|
||||
['non_5frecursive_5fmerge_5fsort_2',['non_recursive_merge_sort',['../non__recursive__merge__sort_8cpp.html#a797be8541ef8748f02c5ef74b3523e4b',1,'non_recursive_merge_sort(const Iterator first, const Iterator last, const size_t n): non_recursive_merge_sort.cpp'],['../non__recursive__merge__sort_8cpp.html#af9efd27abc01f33180960004cd0009d9',1,'non_recursive_merge_sort(const Iterator first, const size_t n): non_recursive_merge_sort.cpp'],['../non__recursive__merge__sort_8cpp.html#a53daee11a3b0d34cf186b161edb77a5e',1,'non_recursive_merge_sort(const Iterator first, const Iterator last): non_recursive_merge_sort.cpp']]],
|
||||
['non_5frecursive_5fmerge_5fsort_2ecpp_3',['non_recursive_merge_sort.cpp',['../non__recursive__merge__sort_8cpp.html',1,'']]]
|
||||
];
|
||||
|
Before Width: | Height: | Size: 273 B |
@@ -1,36 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta name="generator" content="Doxygen 1.8.18"/>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="files_0.js"></script>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div id="SRResults"></div>
|
||||
<script type="text/javascript"><!--
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
createResults();
|
||||
/* @license-end */
|
||||
--></script>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
window.addEventListener("message", function(event) {
|
||||
if (event.data == "take_focus") {
|
||||
var elem = searchResults.NavNext(0);
|
||||
if (elem) elem.focus();
|
||||
}
|
||||
});
|
||||
/* @license-end */
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,4 +0,0 @@
|
||||
var searchData=
|
||||
[
|
||||
['non_5frecursive_5fmerge_5fsort_2ecpp_4',['non_recursive_merge_sort.cpp',['../non__recursive__merge__sort_8cpp.html',1,'']]]
|
||||
];
|
||||
@@ -1,36 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta name="generator" content="Doxygen 1.8.18"/>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="functions_0.js"></script>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div id="SRResults"></div>
|
||||
<script type="text/javascript"><!--
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
createResults();
|
||||
/* @license-end */
|
||||
--></script>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
window.addEventListener("message", function(event) {
|
||||
if (event.data == "take_focus") {
|
||||
var elem = searchResults.NavNext(0);
|
||||
if (elem) elem.focus();
|
||||
}
|
||||
});
|
||||
/* @license-end */
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,4 +0,0 @@
|
||||
var searchData=
|
||||
[
|
||||
['merge_5',['merge',['../non__recursive__merge__sort_8cpp.html#aee1ab42c3a838aa040efd8e784f4a9ab',1,'non_recursive_merge_sort.cpp']]]
|
||||
];
|
||||
@@ -1,36 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta name="generator" content="Doxygen 1.8.18"/>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="functions_1.js"></script>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div id="SRResults"></div>
|
||||
<script type="text/javascript"><!--
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
createResults();
|
||||
/* @license-end */
|
||||
--></script>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
window.addEventListener("message", function(event) {
|
||||
if (event.data == "take_focus") {
|
||||
var elem = searchResults.NavNext(0);
|
||||
if (elem) elem.focus();
|
||||
}
|
||||
});
|
||||
/* @license-end */
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,4 +0,0 @@
|
||||
var searchData=
|
||||
[
|
||||
['non_5frecursive_5fmerge_5fsort_6',['non_recursive_merge_sort',['../non__recursive__merge__sort_8cpp.html#a797be8541ef8748f02c5ef74b3523e4b',1,'non_recursive_merge_sort(const Iterator first, const Iterator last, const size_t n): non_recursive_merge_sort.cpp'],['../non__recursive__merge__sort_8cpp.html#af9efd27abc01f33180960004cd0009d9',1,'non_recursive_merge_sort(const Iterator first, const size_t n): non_recursive_merge_sort.cpp'],['../non__recursive__merge__sort_8cpp.html#a53daee11a3b0d34cf186b161edb77a5e',1,'non_recursive_merge_sort(const Iterator first, const Iterator last): non_recursive_merge_sort.cpp']]]
|
||||
];
|
||||
|
Before Width: | Height: | Size: 465 B |
@@ -1,12 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,36 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html><head><title></title>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta name="generator" content="Doxygen 1.8.18"/>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="pages_0.js"></script>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div id="SRResults"></div>
|
||||
<script type="text/javascript"><!--
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
createResults();
|
||||
/* @license-end */
|
||||
--></script>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript"><!--
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
window.addEventListener("message", function(event) {
|
||||
if (event.data == "take_focus") {
|
||||
var elem = searchResults.NavNext(0);
|
||||
if (elem) elem.focus();
|
||||
}
|
||||
});
|
||||
/* @license-end */
|
||||
--></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,4 +0,0 @@
|
||||
var searchData=
|
||||
[
|
||||
['a_20demonstration_20of_20auto_2dgenerated_20documentation_20using_20doxygen_2e_7',['A demonstration of auto-generated documentation using Doxygen.',['../index.html',1,'']]]
|
||||
];
|
||||
@@ -1,271 +0,0 @@
|
||||
/*---------------- Search Box */
|
||||
|
||||
#FSearchBox {
|
||||
float: left;
|
||||
}
|
||||
|
||||
#MSearchBox {
|
||||
white-space : nowrap;
|
||||
float: none;
|
||||
margin-top: 8px;
|
||||
right: 0px;
|
||||
width: 170px;
|
||||
height: 24px;
|
||||
z-index: 102;
|
||||
}
|
||||
|
||||
#MSearchBox .left
|
||||
{
|
||||
display:block;
|
||||
position:absolute;
|
||||
left:10px;
|
||||
width:20px;
|
||||
height:19px;
|
||||
background:url('search_l.png') no-repeat;
|
||||
background-position:right;
|
||||
}
|
||||
|
||||
#MSearchSelect {
|
||||
display:block;
|
||||
position:absolute;
|
||||
width:20px;
|
||||
height:19px;
|
||||
}
|
||||
|
||||
.left #MSearchSelect {
|
||||
left:4px;
|
||||
}
|
||||
|
||||
.right #MSearchSelect {
|
||||
right:5px;
|
||||
}
|
||||
|
||||
#MSearchField {
|
||||
display:block;
|
||||
position:absolute;
|
||||
height:19px;
|
||||
background:url('search_m.png') repeat-x;
|
||||
border:none;
|
||||
width:115px;
|
||||
margin-left:20px;
|
||||
padding-left:4px;
|
||||
color: #909090;
|
||||
outline: none;
|
||||
font: 9pt Arial, Verdana, sans-serif;
|
||||
-webkit-border-radius: 0px;
|
||||
}
|
||||
|
||||
#FSearchBox #MSearchField {
|
||||
margin-left:15px;
|
||||
}
|
||||
|
||||
#MSearchBox .right {
|
||||
display:block;
|
||||
position:absolute;
|
||||
right:10px;
|
||||
top:8px;
|
||||
width:20px;
|
||||
height:19px;
|
||||
background:url('search_r.png') no-repeat;
|
||||
background-position:left;
|
||||
}
|
||||
|
||||
#MSearchClose {
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: 4px;
|
||||
background : none;
|
||||
border: none;
|
||||
margin: 0px 4px 0px 0px;
|
||||
padding: 0px 0px;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.left #MSearchClose {
|
||||
left: 6px;
|
||||
}
|
||||
|
||||
.right #MSearchClose {
|
||||
right: 2px;
|
||||
}
|
||||
|
||||
.MSearchBoxActive #MSearchField {
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
/*---------------- Search filter selection */
|
||||
|
||||
#MSearchSelectWindow {
|
||||
display: none;
|
||||
position: absolute;
|
||||
left: 0; top: 0;
|
||||
border: 1px solid #90A5CE;
|
||||
background-color: #F9FAFC;
|
||||
z-index: 10001;
|
||||
padding-top: 4px;
|
||||
padding-bottom: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-webkit-border-top-left-radius: 4px;
|
||||
-webkit-border-top-right-radius: 4px;
|
||||
-webkit-border-bottom-left-radius: 4px;
|
||||
-webkit-border-bottom-right-radius: 4px;
|
||||
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
|
||||
.SelectItem {
|
||||
font: 8pt Arial, Verdana, sans-serif;
|
||||
padding-left: 2px;
|
||||
padding-right: 12px;
|
||||
border: 0px;
|
||||
}
|
||||
|
||||
span.SelectionMark {
|
||||
margin-right: 4px;
|
||||
font-family: monospace;
|
||||
outline-style: none;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a.SelectItem {
|
||||
display: block;
|
||||
outline-style: none;
|
||||
color: #000000;
|
||||
text-decoration: none;
|
||||
padding-left: 6px;
|
||||
padding-right: 12px;
|
||||
}
|
||||
|
||||
a.SelectItem:focus,
|
||||
a.SelectItem:active {
|
||||
color: #000000;
|
||||
outline-style: none;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a.SelectItem:hover {
|
||||
color: #FFFFFF;
|
||||
background-color: #3D578C;
|
||||
outline-style: none;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
display: block;
|
||||
}
|
||||
|
||||
/*---------------- Search results window */
|
||||
|
||||
iframe#MSearchResults {
|
||||
width: 60ex;
|
||||
height: 15em;
|
||||
}
|
||||
|
||||
#MSearchResultsWindow {
|
||||
display: none;
|
||||
position: absolute;
|
||||
left: 0; top: 0;
|
||||
border: 1px solid #000;
|
||||
background-color: #EEF1F7;
|
||||
z-index:10000;
|
||||
}
|
||||
|
||||
/* ----------------------------------- */
|
||||
|
||||
|
||||
#SRIndex {
|
||||
clear:both;
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
|
||||
.SREntry {
|
||||
font-size: 10pt;
|
||||
padding-left: 1ex;
|
||||
}
|
||||
|
||||
.SRPage .SREntry {
|
||||
font-size: 8pt;
|
||||
padding: 1px 5px;
|
||||
}
|
||||
|
||||
body.SRPage {
|
||||
margin: 5px 2px;
|
||||
}
|
||||
|
||||
.SRChildren {
|
||||
padding-left: 3ex; padding-bottom: .5em
|
||||
}
|
||||
|
||||
.SRPage .SRChildren {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.SRSymbol {
|
||||
font-weight: bold;
|
||||
color: #425E97;
|
||||
font-family: Arial, Verdana, sans-serif;
|
||||
text-decoration: none;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
a.SRScope {
|
||||
display: block;
|
||||
color: #425E97;
|
||||
font-family: Arial, Verdana, sans-serif;
|
||||
text-decoration: none;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
a.SRSymbol:focus, a.SRSymbol:active,
|
||||
a.SRScope:focus, a.SRScope:active {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
span.SRScope {
|
||||
padding-left: 4px;
|
||||
}
|
||||
|
||||
.SRPage .SRStatus {
|
||||
padding: 2px 5px;
|
||||
font-size: 8pt;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.SRResult {
|
||||
display: none;
|
||||
}
|
||||
|
||||
DIV.searchresults {
|
||||
margin-left: 10px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
/*---------------- External search page results */
|
||||
|
||||
.searchresult {
|
||||
background-color: #F0F3F8;
|
||||
}
|
||||
|
||||
.pages b {
|
||||
color: white;
|
||||
padding: 5px 5px 3px 5px;
|
||||
background-image: url("../tab_a.png");
|
||||
background-repeat: repeat-x;
|
||||
text-shadow: 0 1px 1px #000000;
|
||||
}
|
||||
|
||||
.pages {
|
||||
line-height: 17px;
|
||||
margin-left: 4px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.hl {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#searchresults {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.searchpages {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
@@ -1,814 +0,0 @@
|
||||
/*
|
||||
@licstart The following is the entire license notice for the JavaScript code in this file.
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (C) 1997-2020 by Dimitri van Heesch
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software
|
||||
and associated documentation files (the "Software"), to deal in the Software without restriction,
|
||||
including without limitation the rights to use, copy, modify, merge, publish, distribute,
|
||||
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or
|
||||
substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
|
||||
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
@licend The above is the entire license notice for the JavaScript code in this file
|
||||
*/
|
||||
function convertToId(search)
|
||||
{
|
||||
var result = '';
|
||||
for (i=0;i<search.length;i++)
|
||||
{
|
||||
var c = search.charAt(i);
|
||||
var cn = c.charCodeAt(0);
|
||||
if (c.match(/[a-z0-9\u0080-\uFFFF]/))
|
||||
{
|
||||
result+=c;
|
||||
}
|
||||
else if (cn<16)
|
||||
{
|
||||
result+="_0"+cn.toString(16);
|
||||
}
|
||||
else
|
||||
{
|
||||
result+="_"+cn.toString(16);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
function getXPos(item)
|
||||
{
|
||||
var x = 0;
|
||||
if (item.offsetWidth)
|
||||
{
|
||||
while (item && item!=document.body)
|
||||
{
|
||||
x += item.offsetLeft;
|
||||
item = item.offsetParent;
|
||||
}
|
||||
}
|
||||
return x;
|
||||
}
|
||||
|
||||
function getYPos(item)
|
||||
{
|
||||
var y = 0;
|
||||
if (item.offsetWidth)
|
||||
{
|
||||
while (item && item!=document.body)
|
||||
{
|
||||
y += item.offsetTop;
|
||||
item = item.offsetParent;
|
||||
}
|
||||
}
|
||||
return y;
|
||||
}
|
||||
|
||||
/* A class handling everything associated with the search panel.
|
||||
|
||||
Parameters:
|
||||
name - The name of the global variable that will be
|
||||
storing this instance. Is needed to be able to set timeouts.
|
||||
resultPath - path to use for external files
|
||||
*/
|
||||
function SearchBox(name, resultsPath, inFrame, label)
|
||||
{
|
||||
if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); }
|
||||
|
||||
// ---------- Instance variables
|
||||
this.name = name;
|
||||
this.resultsPath = resultsPath;
|
||||
this.keyTimeout = 0;
|
||||
this.keyTimeoutLength = 500;
|
||||
this.closeSelectionTimeout = 300;
|
||||
this.lastSearchValue = "";
|
||||
this.lastResultsPage = "";
|
||||
this.hideTimeout = 0;
|
||||
this.searchIndex = 0;
|
||||
this.searchActive = false;
|
||||
this.insideFrame = inFrame;
|
||||
this.searchLabel = label;
|
||||
|
||||
// ----------- DOM Elements
|
||||
|
||||
this.DOMSearchField = function()
|
||||
{ return document.getElementById("MSearchField"); }
|
||||
|
||||
this.DOMSearchSelect = function()
|
||||
{ return document.getElementById("MSearchSelect"); }
|
||||
|
||||
this.DOMSearchSelectWindow = function()
|
||||
{ return document.getElementById("MSearchSelectWindow"); }
|
||||
|
||||
this.DOMPopupSearchResults = function()
|
||||
{ return document.getElementById("MSearchResults"); }
|
||||
|
||||
this.DOMPopupSearchResultsWindow = function()
|
||||
{ return document.getElementById("MSearchResultsWindow"); }
|
||||
|
||||
this.DOMSearchClose = function()
|
||||
{ return document.getElementById("MSearchClose"); }
|
||||
|
||||
this.DOMSearchBox = function()
|
||||
{ return document.getElementById("MSearchBox"); }
|
||||
|
||||
// ------------ Event Handlers
|
||||
|
||||
// Called when focus is added or removed from the search field.
|
||||
this.OnSearchFieldFocus = function(isActive)
|
||||
{
|
||||
this.Activate(isActive);
|
||||
}
|
||||
|
||||
this.OnSearchSelectShow = function()
|
||||
{
|
||||
var searchSelectWindow = this.DOMSearchSelectWindow();
|
||||
var searchField = this.DOMSearchSelect();
|
||||
|
||||
if (this.insideFrame)
|
||||
{
|
||||
var left = getXPos(searchField);
|
||||
var top = getYPos(searchField);
|
||||
left += searchField.offsetWidth + 6;
|
||||
top += searchField.offsetHeight;
|
||||
|
||||
// show search selection popup
|
||||
searchSelectWindow.style.display='block';
|
||||
left -= searchSelectWindow.offsetWidth;
|
||||
searchSelectWindow.style.left = left + 'px';
|
||||
searchSelectWindow.style.top = top + 'px';
|
||||
}
|
||||
else
|
||||
{
|
||||
var left = getXPos(searchField);
|
||||
var top = getYPos(searchField);
|
||||
top += searchField.offsetHeight;
|
||||
|
||||
// show search selection popup
|
||||
searchSelectWindow.style.display='block';
|
||||
searchSelectWindow.style.left = left + 'px';
|
||||
searchSelectWindow.style.top = top + 'px';
|
||||
}
|
||||
|
||||
// stop selection hide timer
|
||||
if (this.hideTimeout)
|
||||
{
|
||||
clearTimeout(this.hideTimeout);
|
||||
this.hideTimeout=0;
|
||||
}
|
||||
return false; // to avoid "image drag" default event
|
||||
}
|
||||
|
||||
this.OnSearchSelectHide = function()
|
||||
{
|
||||
this.hideTimeout = setTimeout(this.name +".CloseSelectionWindow()",
|
||||
this.closeSelectionTimeout);
|
||||
}
|
||||
|
||||
// Called when the content of the search field is changed.
|
||||
this.OnSearchFieldChange = function(evt)
|
||||
{
|
||||
if (this.keyTimeout) // kill running timer
|
||||
{
|
||||
clearTimeout(this.keyTimeout);
|
||||
this.keyTimeout = 0;
|
||||
}
|
||||
|
||||
var e = (evt) ? evt : window.event; // for IE
|
||||
if (e.keyCode==40 || e.keyCode==13)
|
||||
{
|
||||
if (e.shiftKey==1)
|
||||
{
|
||||
this.OnSearchSelectShow();
|
||||
var win=this.DOMSearchSelectWindow();
|
||||
for (i=0;i<win.childNodes.length;i++)
|
||||
{
|
||||
var child = win.childNodes[i]; // get span within a
|
||||
if (child.className=='SelectItem')
|
||||
{
|
||||
child.focus();
|
||||
return;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
window.frames.MSearchResults.postMessage("take_focus", "*");
|
||||
}
|
||||
}
|
||||
else if (e.keyCode==27) // Escape out of the search field
|
||||
{
|
||||
this.DOMSearchField().blur();
|
||||
this.DOMPopupSearchResultsWindow().style.display = 'none';
|
||||
this.DOMSearchClose().style.display = 'none';
|
||||
this.lastSearchValue = '';
|
||||
this.Activate(false);
|
||||
return;
|
||||
}
|
||||
|
||||
// strip whitespaces
|
||||
var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
|
||||
|
||||
if (searchValue != this.lastSearchValue) // search value has changed
|
||||
{
|
||||
if (searchValue != "") // non-empty search
|
||||
{
|
||||
// set timer for search update
|
||||
this.keyTimeout = setTimeout(this.name + '.Search()',
|
||||
this.keyTimeoutLength);
|
||||
}
|
||||
else // empty search field
|
||||
{
|
||||
this.DOMPopupSearchResultsWindow().style.display = 'none';
|
||||
this.DOMSearchClose().style.display = 'none';
|
||||
this.lastSearchValue = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.SelectItemCount = function(id)
|
||||
{
|
||||
var count=0;
|
||||
var win=this.DOMSearchSelectWindow();
|
||||
for (i=0;i<win.childNodes.length;i++)
|
||||
{
|
||||
var child = win.childNodes[i]; // get span within a
|
||||
if (child.className=='SelectItem')
|
||||
{
|
||||
count++;
|
||||
}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
this.SelectItemSet = function(id)
|
||||
{
|
||||
var i,j=0;
|
||||
var win=this.DOMSearchSelectWindow();
|
||||
for (i=0;i<win.childNodes.length;i++)
|
||||
{
|
||||
var child = win.childNodes[i]; // get span within a
|
||||
if (child.className=='SelectItem')
|
||||
{
|
||||
var node = child.firstChild;
|
||||
if (j==id)
|
||||
{
|
||||
node.innerHTML='•';
|
||||
}
|
||||
else
|
||||
{
|
||||
node.innerHTML=' ';
|
||||
}
|
||||
j++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Called when an search filter selection is made.
|
||||
// set item with index id as the active item
|
||||
this.OnSelectItem = function(id)
|
||||
{
|
||||
this.searchIndex = id;
|
||||
this.SelectItemSet(id);
|
||||
var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
|
||||
if (searchValue!="" && this.searchActive) // something was found -> do a search
|
||||
{
|
||||
this.Search();
|
||||
}
|
||||
}
|
||||
|
||||
this.OnSearchSelectKey = function(evt)
|
||||
{
|
||||
var e = (evt) ? evt : window.event; // for IE
|
||||
if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) // Down
|
||||
{
|
||||
this.searchIndex++;
|
||||
this.OnSelectItem(this.searchIndex);
|
||||
}
|
||||
else if (e.keyCode==38 && this.searchIndex>0) // Up
|
||||
{
|
||||
this.searchIndex--;
|
||||
this.OnSelectItem(this.searchIndex);
|
||||
}
|
||||
else if (e.keyCode==13 || e.keyCode==27)
|
||||
{
|
||||
this.OnSelectItem(this.searchIndex);
|
||||
this.CloseSelectionWindow();
|
||||
this.DOMSearchField().focus();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// --------- Actions
|
||||
|
||||
// Closes the results window.
|
||||
this.CloseResultsWindow = function()
|
||||
{
|
||||
this.DOMPopupSearchResultsWindow().style.display = 'none';
|
||||
this.DOMSearchClose().style.display = 'none';
|
||||
this.Activate(false);
|
||||
}
|
||||
|
||||
this.CloseSelectionWindow = function()
|
||||
{
|
||||
this.DOMSearchSelectWindow().style.display = 'none';
|
||||
}
|
||||
|
||||
// Performs a search.
|
||||
this.Search = function()
|
||||
{
|
||||
this.keyTimeout = 0;
|
||||
|
||||
// strip leading whitespace
|
||||
var searchValue = this.DOMSearchField().value.replace(/^ +/, "");
|
||||
|
||||
var code = searchValue.toLowerCase().charCodeAt(0);
|
||||
var idxChar = searchValue.substr(0, 1).toLowerCase();
|
||||
if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair
|
||||
{
|
||||
idxChar = searchValue.substr(0, 2);
|
||||
}
|
||||
|
||||
var resultsPage;
|
||||
var resultsPageWithSearch;
|
||||
var hasResultsPage;
|
||||
|
||||
var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar);
|
||||
if (idx!=-1)
|
||||
{
|
||||
var hexCode=idx.toString(16);
|
||||
resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html';
|
||||
resultsPageWithSearch = resultsPage+'?'+escape(searchValue);
|
||||
hasResultsPage = true;
|
||||
}
|
||||
else // nothing available for this search term
|
||||
{
|
||||
resultsPage = this.resultsPath + '/nomatches.html';
|
||||
resultsPageWithSearch = resultsPage;
|
||||
hasResultsPage = false;
|
||||
}
|
||||
|
||||
window.frames.MSearchResults.location = resultsPageWithSearch;
|
||||
var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow();
|
||||
|
||||
if (domPopupSearchResultsWindow.style.display!='block')
|
||||
{
|
||||
var domSearchBox = this.DOMSearchBox();
|
||||
this.DOMSearchClose().style.display = 'inline';
|
||||
if (this.insideFrame)
|
||||
{
|
||||
var domPopupSearchResults = this.DOMPopupSearchResults();
|
||||
domPopupSearchResultsWindow.style.position = 'relative';
|
||||
domPopupSearchResultsWindow.style.display = 'block';
|
||||
var width = document.body.clientWidth - 8; // the -8 is for IE :-(
|
||||
domPopupSearchResultsWindow.style.width = width + 'px';
|
||||
domPopupSearchResults.style.width = width + 'px';
|
||||
}
|
||||
else
|
||||
{
|
||||
var domPopupSearchResults = this.DOMPopupSearchResults();
|
||||
var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth;
|
||||
var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1;
|
||||
domPopupSearchResultsWindow.style.display = 'block';
|
||||
left -= domPopupSearchResults.offsetWidth;
|
||||
domPopupSearchResultsWindow.style.top = top + 'px';
|
||||
domPopupSearchResultsWindow.style.left = left + 'px';
|
||||
}
|
||||
}
|
||||
|
||||
this.lastSearchValue = searchValue;
|
||||
this.lastResultsPage = resultsPage;
|
||||
}
|
||||
|
||||
// -------- Activation Functions
|
||||
|
||||
// Activates or deactivates the search panel, resetting things to
|
||||
// their default values if necessary.
|
||||
this.Activate = function(isActive)
|
||||
{
|
||||
if (isActive || // open it
|
||||
this.DOMPopupSearchResultsWindow().style.display == 'block'
|
||||
)
|
||||
{
|
||||
this.DOMSearchBox().className = 'MSearchBoxActive';
|
||||
|
||||
var searchField = this.DOMSearchField();
|
||||
|
||||
if (searchField.value == this.searchLabel) // clear "Search" term upon entry
|
||||
{
|
||||
searchField.value = '';
|
||||
this.searchActive = true;
|
||||
}
|
||||
}
|
||||
else if (!isActive) // directly remove the panel
|
||||
{
|
||||
this.DOMSearchBox().className = 'MSearchBoxInactive';
|
||||
this.DOMSearchField().value = this.searchLabel;
|
||||
this.searchActive = false;
|
||||
this.lastSearchValue = ''
|
||||
this.lastResultsPage = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
// The class that handles everything on the search results page.
|
||||
function SearchResults(name)
|
||||
{
|
||||
// The number of matches from the last run of <Search()>.
|
||||
this.lastMatchCount = 0;
|
||||
this.lastKey = 0;
|
||||
this.repeatOn = false;
|
||||
|
||||
// Toggles the visibility of the passed element ID.
|
||||
this.FindChildElement = function(id)
|
||||
{
|
||||
var parentElement = document.getElementById(id);
|
||||
var element = parentElement.firstChild;
|
||||
|
||||
while (element && element!=parentElement)
|
||||
{
|
||||
if (element.nodeName == 'DIV' && element.className == 'SRChildren')
|
||||
{
|
||||
return element;
|
||||
}
|
||||
|
||||
if (element.nodeName == 'DIV' && element.hasChildNodes())
|
||||
{
|
||||
element = element.firstChild;
|
||||
}
|
||||
else if (element.nextSibling)
|
||||
{
|
||||
element = element.nextSibling;
|
||||
}
|
||||
else
|
||||
{
|
||||
do
|
||||
{
|
||||
element = element.parentNode;
|
||||
}
|
||||
while (element && element!=parentElement && !element.nextSibling);
|
||||
|
||||
if (element && element!=parentElement)
|
||||
{
|
||||
element = element.nextSibling;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.Toggle = function(id)
|
||||
{
|
||||
var element = this.FindChildElement(id);
|
||||
if (element)
|
||||
{
|
||||
if (element.style.display == 'block')
|
||||
{
|
||||
element.style.display = 'none';
|
||||
}
|
||||
else
|
||||
{
|
||||
element.style.display = 'block';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Searches for the passed string. If there is no parameter,
|
||||
// it takes it from the URL query.
|
||||
//
|
||||
// Always returns true, since other documents may try to call it
|
||||
// and that may or may not be possible.
|
||||
this.Search = function(search)
|
||||
{
|
||||
if (!search) // get search word from URL
|
||||
{
|
||||
search = window.location.search;
|
||||
search = search.substring(1); // Remove the leading '?'
|
||||
search = unescape(search);
|
||||
}
|
||||
|
||||
search = search.replace(/^ +/, ""); // strip leading spaces
|
||||
search = search.replace(/ +$/, ""); // strip trailing spaces
|
||||
search = search.toLowerCase();
|
||||
search = convertToId(search);
|
||||
|
||||
var resultRows = document.getElementsByTagName("div");
|
||||
var matches = 0;
|
||||
|
||||
var i = 0;
|
||||
while (i < resultRows.length)
|
||||
{
|
||||
var row = resultRows.item(i);
|
||||
if (row.className == "SRResult")
|
||||
{
|
||||
var rowMatchName = row.id.toLowerCase();
|
||||
rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_'
|
||||
|
||||
if (search.length<=rowMatchName.length &&
|
||||
rowMatchName.substr(0, search.length)==search)
|
||||
{
|
||||
row.style.display = 'block';
|
||||
matches++;
|
||||
}
|
||||
else
|
||||
{
|
||||
row.style.display = 'none';
|
||||
}
|
||||
}
|
||||
i++;
|
||||
}
|
||||
document.getElementById("Searching").style.display='none';
|
||||
if (matches == 0) // no results
|
||||
{
|
||||
document.getElementById("NoMatches").style.display='block';
|
||||
}
|
||||
else // at least one result
|
||||
{
|
||||
document.getElementById("NoMatches").style.display='none';
|
||||
}
|
||||
this.lastMatchCount = matches;
|
||||
return true;
|
||||
}
|
||||
|
||||
// return the first item with index index or higher that is visible
|
||||
this.NavNext = function(index)
|
||||
{
|
||||
var focusItem;
|
||||
while (1)
|
||||
{
|
||||
var focusName = 'Item'+index;
|
||||
focusItem = document.getElementById(focusName);
|
||||
if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
|
||||
{
|
||||
break;
|
||||
}
|
||||
else if (!focusItem) // last element
|
||||
{
|
||||
break;
|
||||
}
|
||||
focusItem=null;
|
||||
index++;
|
||||
}
|
||||
return focusItem;
|
||||
}
|
||||
|
||||
this.NavPrev = function(index)
|
||||
{
|
||||
var focusItem;
|
||||
while (1)
|
||||
{
|
||||
var focusName = 'Item'+index;
|
||||
focusItem = document.getElementById(focusName);
|
||||
if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
|
||||
{
|
||||
break;
|
||||
}
|
||||
else if (!focusItem) // last element
|
||||
{
|
||||
break;
|
||||
}
|
||||
focusItem=null;
|
||||
index--;
|
||||
}
|
||||
return focusItem;
|
||||
}
|
||||
|
||||
this.ProcessKeys = function(e)
|
||||
{
|
||||
if (e.type == "keydown")
|
||||
{
|
||||
this.repeatOn = false;
|
||||
this.lastKey = e.keyCode;
|
||||
}
|
||||
else if (e.type == "keypress")
|
||||
{
|
||||
if (!this.repeatOn)
|
||||
{
|
||||
if (this.lastKey) this.repeatOn = true;
|
||||
return false; // ignore first keypress after keydown
|
||||
}
|
||||
}
|
||||
else if (e.type == "keyup")
|
||||
{
|
||||
this.lastKey = 0;
|
||||
this.repeatOn = false;
|
||||
}
|
||||
return this.lastKey!=0;
|
||||
}
|
||||
|
||||
this.Nav = function(evt,itemIndex)
|
||||
{
|
||||
var e = (evt) ? evt : window.event; // for IE
|
||||
if (e.keyCode==13) return true;
|
||||
if (!this.ProcessKeys(e)) return false;
|
||||
|
||||
if (this.lastKey==38) // Up
|
||||
{
|
||||
var newIndex = itemIndex-1;
|
||||
var focusItem = this.NavPrev(newIndex);
|
||||
if (focusItem)
|
||||
{
|
||||
var child = this.FindChildElement(focusItem.parentNode.parentNode.id);
|
||||
if (child && child.style.display == 'block') // children visible
|
||||
{
|
||||
var n=0;
|
||||
var tmpElem;
|
||||
while (1) // search for last child
|
||||
{
|
||||
tmpElem = document.getElementById('Item'+newIndex+'_c'+n);
|
||||
if (tmpElem)
|
||||
{
|
||||
focusItem = tmpElem;
|
||||
}
|
||||
else // found it!
|
||||
{
|
||||
break;
|
||||
}
|
||||
n++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (focusItem)
|
||||
{
|
||||
focusItem.focus();
|
||||
}
|
||||
else // return focus to search field
|
||||
{
|
||||
parent.document.getElementById("MSearchField").focus();
|
||||
}
|
||||
}
|
||||
else if (this.lastKey==40) // Down
|
||||
{
|
||||
var newIndex = itemIndex+1;
|
||||
var focusItem;
|
||||
var item = document.getElementById('Item'+itemIndex);
|
||||
var elem = this.FindChildElement(item.parentNode.parentNode.id);
|
||||
if (elem && elem.style.display == 'block') // children visible
|
||||
{
|
||||
focusItem = document.getElementById('Item'+itemIndex+'_c0');
|
||||
}
|
||||
if (!focusItem) focusItem = this.NavNext(newIndex);
|
||||
if (focusItem) focusItem.focus();
|
||||
}
|
||||
else if (this.lastKey==39) // Right
|
||||
{
|
||||
var item = document.getElementById('Item'+itemIndex);
|
||||
var elem = this.FindChildElement(item.parentNode.parentNode.id);
|
||||
if (elem) elem.style.display = 'block';
|
||||
}
|
||||
else if (this.lastKey==37) // Left
|
||||
{
|
||||
var item = document.getElementById('Item'+itemIndex);
|
||||
var elem = this.FindChildElement(item.parentNode.parentNode.id);
|
||||
if (elem) elem.style.display = 'none';
|
||||
}
|
||||
else if (this.lastKey==27) // Escape
|
||||
{
|
||||
parent.searchBox.CloseResultsWindow();
|
||||
parent.document.getElementById("MSearchField").focus();
|
||||
}
|
||||
else if (this.lastKey==13) // Enter
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
this.NavChild = function(evt,itemIndex,childIndex)
|
||||
{
|
||||
var e = (evt) ? evt : window.event; // for IE
|
||||
if (e.keyCode==13) return true;
|
||||
if (!this.ProcessKeys(e)) return false;
|
||||
|
||||
if (this.lastKey==38) // Up
|
||||
{
|
||||
if (childIndex>0)
|
||||
{
|
||||
var newIndex = childIndex-1;
|
||||
document.getElementById('Item'+itemIndex+'_c'+newIndex).focus();
|
||||
}
|
||||
else // already at first child, jump to parent
|
||||
{
|
||||
document.getElementById('Item'+itemIndex).focus();
|
||||
}
|
||||
}
|
||||
else if (this.lastKey==40) // Down
|
||||
{
|
||||
var newIndex = childIndex+1;
|
||||
var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex);
|
||||
if (!elem) // last child, jump to parent next parent
|
||||
{
|
||||
elem = this.NavNext(itemIndex+1);
|
||||
}
|
||||
if (elem)
|
||||
{
|
||||
elem.focus();
|
||||
}
|
||||
}
|
||||
else if (this.lastKey==27) // Escape
|
||||
{
|
||||
parent.searchBox.CloseResultsWindow();
|
||||
parent.document.getElementById("MSearchField").focus();
|
||||
}
|
||||
else if (this.lastKey==13) // Enter
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function setKeyActions(elem,action)
|
||||
{
|
||||
elem.setAttribute('onkeydown',action);
|
||||
elem.setAttribute('onkeypress',action);
|
||||
elem.setAttribute('onkeyup',action);
|
||||
}
|
||||
|
||||
function setClassAttr(elem,attr)
|
||||
{
|
||||
elem.setAttribute('class',attr);
|
||||
elem.setAttribute('className',attr);
|
||||
}
|
||||
|
||||
function createResults()
|
||||
{
|
||||
var results = document.getElementById("SRResults");
|
||||
for (var e=0; e<searchData.length; e++)
|
||||
{
|
||||
var id = searchData[e][0];
|
||||
var srResult = document.createElement('div');
|
||||
srResult.setAttribute('id','SR_'+id);
|
||||
setClassAttr(srResult,'SRResult');
|
||||
var srEntry = document.createElement('div');
|
||||
setClassAttr(srEntry,'SREntry');
|
||||
var srLink = document.createElement('a');
|
||||
srLink.setAttribute('id','Item'+e);
|
||||
setKeyActions(srLink,'return searchResults.Nav(event,'+e+')');
|
||||
setClassAttr(srLink,'SRSymbol');
|
||||
srLink.innerHTML = searchData[e][1][0];
|
||||
srEntry.appendChild(srLink);
|
||||
if (searchData[e][1].length==2) // single result
|
||||
{
|
||||
srLink.setAttribute('href',searchData[e][1][1][0]);
|
||||
if (searchData[e][1][1][1])
|
||||
{
|
||||
srLink.setAttribute('target','_parent');
|
||||
}
|
||||
var srScope = document.createElement('span');
|
||||
setClassAttr(srScope,'SRScope');
|
||||
srScope.innerHTML = searchData[e][1][1][2];
|
||||
srEntry.appendChild(srScope);
|
||||
}
|
||||
else // multiple results
|
||||
{
|
||||
srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")');
|
||||
var srChildren = document.createElement('div');
|
||||
setClassAttr(srChildren,'SRChildren');
|
||||
for (var c=0; c<searchData[e][1].length-1; c++)
|
||||
{
|
||||
var srChild = document.createElement('a');
|
||||
srChild.setAttribute('id','Item'+e+'_c'+c);
|
||||
setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')');
|
||||
setClassAttr(srChild,'SRScope');
|
||||
srChild.setAttribute('href',searchData[e][1][c+1][0]);
|
||||
if (searchData[e][1][c+1][1])
|
||||
{
|
||||
srChild.setAttribute('target','_parent');
|
||||
}
|
||||
srChild.innerHTML = searchData[e][1][c+1][2];
|
||||
srChildren.appendChild(srChild);
|
||||
}
|
||||
srEntry.appendChild(srChildren);
|
||||
}
|
||||
srResult.appendChild(srEntry);
|
||||
results.appendChild(srResult);
|
||||
}
|
||||
}
|
||||
|
||||
function init_search()
|
||||
{
|
||||
var results = document.getElementById("MSearchSelectWindow");
|
||||
for (var key in indexSectionLabels)
|
||||
{
|
||||
var link = document.createElement('a');
|
||||
link.setAttribute('class','SelectItem');
|
||||
link.setAttribute('onclick','searchBox.OnSelectItem('+key+')');
|
||||
link.href='javascript:void(0)';
|
||||
link.innerHTML='<span class="SelectionMark"> </span>'+indexSectionLabels[key];
|
||||
results.appendChild(link);
|
||||
}
|
||||
searchBox.OnSelectItem(0);
|
||||
}
|
||||
/* @license-end */
|
||||
|
Before Width: | Height: | Size: 567 B |
|
Before Width: | Height: | Size: 158 B |
|
Before Width: | Height: | Size: 553 B |
@@ -1,24 +0,0 @@
|
||||
var indexSectionsWithContent =
|
||||
{
|
||||
0: "amn",
|
||||
1: "n",
|
||||
2: "mn",
|
||||
3: "a"
|
||||
};
|
||||
|
||||
var indexSectionNames =
|
||||
{
|
||||
0: "all",
|
||||
1: "files",
|
||||
2: "functions",
|
||||
3: "pages"
|
||||
};
|
||||
|
||||
var indexSectionLabels =
|
||||
{
|
||||
0: "All",
|
||||
1: "Files",
|
||||
2: "Functions",
|
||||
3: "Pages"
|
||||
};
|
||||
|
||||
|
Before Width: | Height: | Size: 314 B |
|
Before Width: | Height: | Size: 853 B |
BIN
html/sync_on.png
|
Before Width: | Height: | Size: 845 B |
BIN
html/tab_a.png
|
Before Width: | Height: | Size: 142 B |
BIN
html/tab_b.png
|
Before Width: | Height: | Size: 169 B |
BIN
html/tab_h.png
|
Before Width: | Height: | Size: 177 B |
BIN
html/tab_s.png
|
Before Width: | Height: | Size: 184 B |
@@ -1,90 +0,0 @@
|
||||
#include <algorithm>
|
||||
#include <iostream>
|
||||
|
||||
void librarySort(int *index, int n) {
|
||||
int lib_size, index_pos,
|
||||
*gaps, // gaps
|
||||
*library[2]; // libraries
|
||||
|
||||
bool target_lib, *numbered;
|
||||
|
||||
for (int i = 0; i < 2; i++)
|
||||
library[i] = new int[n];
|
||||
|
||||
gaps = new int[n + 1];
|
||||
numbered = new bool[n + 1];
|
||||
|
||||
lib_size = 1;
|
||||
index_pos = 1;
|
||||
target_lib = 0;
|
||||
library[target_lib][0] = index[0];
|
||||
|
||||
while (index_pos < n) {
|
||||
// binary search
|
||||
int insert = std::distance(
|
||||
library[target_lib],
|
||||
std::lower_bound(library[target_lib],
|
||||
library[target_lib] + lib_size, index[index_pos]));
|
||||
|
||||
// if there is no gap to insert a new index ...
|
||||
|
||||
if (numbered[insert] == true) {
|
||||
int prov_size = 0, next_target_lib = !target_lib;
|
||||
|
||||
// update library and clear gaps
|
||||
|
||||
for (int i = 0; i <= n; i++) {
|
||||
if (numbered[i] == true) {
|
||||
library[next_target_lib][prov_size] = gaps[i];
|
||||
prov_size++;
|
||||
numbered[i] = false;
|
||||
}
|
||||
|
||||
if (i <= lib_size) {
|
||||
library[next_target_lib][prov_size] =
|
||||
library[target_lib][i];
|
||||
prov_size++;
|
||||
}
|
||||
}
|
||||
|
||||
target_lib = next_target_lib;
|
||||
lib_size = prov_size - 1;
|
||||
} else {
|
||||
numbered[insert] = true;
|
||||
gaps[insert] = index[index_pos];
|
||||
index_pos++;
|
||||
}
|
||||
}
|
||||
|
||||
int index_pos_for_output = 0;
|
||||
for (int i = 0; index_pos_for_output < n; i++) {
|
||||
if (numbered[i] == true) {
|
||||
// std::cout << gaps[i] << std::endl;
|
||||
index[index_pos_for_output] = gaps[i];
|
||||
index_pos_for_output++;
|
||||
}
|
||||
|
||||
if (i < lib_size) {
|
||||
// std::cout << library[target_lib][i] << std::endl;
|
||||
index[index_pos_for_output] = library[target_lib][i];
|
||||
index_pos_for_output++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
// ---example--
|
||||
int index_ex[] = {-6, 5, 9, 1, 9, 1, 0, 1, -8, 4, -12};
|
||||
int n_ex = sizeof(index_ex) / sizeof(index_ex[0]);
|
||||
|
||||
librarySort(index_ex, n_ex);
|
||||
std::cout << "sorted array :" << std::endl;
|
||||
for (int i = 0; i < n_ex; i++)
|
||||
std::cout << index_ex[i] << " ";
|
||||
std::cout << std::endl;
|
||||
|
||||
/* --output--
|
||||
sorted array :
|
||||
-12 -8 -6 0 1 1 1 4 5 9 9
|
||||
*/
|
||||
}
|
||||
11
makefile
@@ -1,11 +0,0 @@
|
||||
non_recursive_merge_sort: non_recursive_merge_sort.cpp
|
||||
g++ -std=c++17 -o non_recursive_merge_sort non_recursive_merge_sort.cpp
|
||||
.PHONY: test
|
||||
.PHONY: doc
|
||||
.PHONY: clean
|
||||
test: non_recursive_merge_sort
|
||||
./non_recursive_merge_sort
|
||||
doc: doxy.txt
|
||||
doxygen doxy.txt
|
||||
clean:
|
||||
rm -fr non_recursive_merge_sort html
|
||||
@@ -1,114 +0,0 @@
|
||||
/**
|
||||
* Copyright 2020 @author Albirair
|
||||
* @file
|
||||
*
|
||||
* A generic implementation of non-recursive merge sort.
|
||||
*/
|
||||
#include <cstddef> // for size_t
|
||||
#include <utility> // for std::move & std::remove_reference_t
|
||||
template<class Iterator>
|
||||
void merge(Iterator, Iterator, const Iterator, char[]);
|
||||
/// bottom-up merge sort which sorts elements in a non-decreasing order
|
||||
/**
|
||||
* sorts elements non-recursively by breaking them into small segments, merging
|
||||
* adjacent segments into larger sorted segments, then increasing the sizes of
|
||||
* segments by factors of 2 and repeating the same process.
|
||||
* best-case = worst-case = O(n log(n))
|
||||
* @param first points to the first element
|
||||
* @param last points to 1-step past the last element
|
||||
* @param n the number of elements
|
||||
*/
|
||||
template<class Iterator>
|
||||
void non_recursive_merge_sort(const Iterator first, const Iterator last,
|
||||
const size_t n) {
|
||||
// create a buffer large enough to store all elements
|
||||
// dynamically allocated to comply with cpplint
|
||||
char * buffer = new char[n * sizeof(*first)];
|
||||
// buffer size can be optimized to largest power of 2 less than n elements
|
||||
// divide the container into equally-sized segments whose length start at 1
|
||||
// and keeps increasing by factors of 2
|
||||
for (size_t length(1); length < n; length <<= 1) {
|
||||
// merge adjacent segments whose number is n / (length * 2)
|
||||
Iterator left(first);
|
||||
for (size_t counter(n / (length << 1)); counter; --counter) {
|
||||
Iterator right(left + length), end(right + length);
|
||||
merge(left, right, end, buffer);
|
||||
left = end;
|
||||
}
|
||||
// if the number of remaining elements (n * 2 % length) is longer
|
||||
// than a segment, merge the remaining elements
|
||||
if ((n & ((length << 1) - 1)) > length)
|
||||
merge(left, left + length, last, buffer);
|
||||
}
|
||||
delete[] buffer;
|
||||
}
|
||||
/// merges 2 sorted adjacent segments into a larger sorted segment
|
||||
/**
|
||||
* best-case = worst-case = O(n)
|
||||
* @param l points to the left part
|
||||
* @param r points to the right part, end of left part
|
||||
* @param e points to end of right part
|
||||
* @param b points at the buffer
|
||||
*/
|
||||
template<class Iterator>
|
||||
void merge(Iterator l, Iterator r, const Iterator e, char b[]) {
|
||||
// create 2 pointers to point at the buffer
|
||||
auto p(reinterpret_cast<std::remove_reference_t<decltype(*l)>*>(b)), c(p);
|
||||
// move the left part of the segment
|
||||
for (Iterator t(l); r != t; ++t)
|
||||
*p++ = std::move(*t);
|
||||
// while neither the buffer nor the right part has been exhausted
|
||||
// move the smallest element of the two back to the container
|
||||
while (e != r && c != p)
|
||||
*l++ = std::move(*r < *c ? *r++ : *c++);
|
||||
// notice only one of the two following loops will be executed
|
||||
// while the right part hasn't bee exhausted, move it back
|
||||
while (e != r)
|
||||
*l++ = std::move(*r++);
|
||||
// while the buffer hasn't bee exhausted, move it back
|
||||
while (c != p)
|
||||
*l++ = std::move(*c++);
|
||||
}
|
||||
/// bottom-up merge sort which sorts elements in a non-decreasing order
|
||||
/**
|
||||
* @param first points to the first element
|
||||
* @param n the number of elements
|
||||
*/
|
||||
template<class Iterator>
|
||||
void non_recursive_merge_sort(const Iterator first, const size_t n) {
|
||||
non_recursive_merge_sort(first, first + n, n);
|
||||
}
|
||||
/// bottom-up merge sort which sorts elements in a non-decreasing order
|
||||
/**
|
||||
* @param first points to the first element
|
||||
* @param last points to 1-step past the last element
|
||||
*/
|
||||
template<class Iterator>
|
||||
void non_recursive_merge_sort(const Iterator first, const Iterator last) {
|
||||
non_recursive_merge_sort(first, last, last - first);
|
||||
}
|
||||
/**
|
||||
* @mainpage A demonstration of auto-generated documentation using Doxygen.
|
||||
* Currently, it only creates output for non_recursive_merge_sort.cpp, but if
|
||||
* it has proven its efficacy it can be expanded to other files.
|
||||
* The configuration file is named doxy.txt and has been auto-generated too.
|
||||
*/
|
||||
// the remaining of this file is only for testing. It can erased to to convert
|
||||
// it into a header file for later re-use.
|
||||
#include <iostream>
|
||||
int main(int argc, char ** argv) {
|
||||
int size;
|
||||
std::cout << "Enter the number of elements : ";
|
||||
std::cin >> size;
|
||||
int * arr = new int[size];
|
||||
for (int i = 0; i < size; ++i) {
|
||||
std::cout << "arr[" << i << "] = ";
|
||||
std::cin >> arr[i];
|
||||
}
|
||||
non_recursive_merge_sort(arr, size);
|
||||
std::cout << "Sorted array\n";
|
||||
for (int i = 0; i < size; ++i)
|
||||
std::cout << "arr[" << i << "] = " << arr[i] << '\n';
|
||||
delete[] arr;
|
||||
return 0;
|
||||
}
|
||||