Data Structure Worksheet
Data Structure Worksheet
public: }
int no_of_elements; }
void getarray(); }
cin>>no_of_elements; }
for(int i=0;i<no_of_elements;i++){ }
}} SelectionSort SS;
indx = 0; return 0;
Binary_Search(my_numbers, 10101); }
Binary_Search(my_numbers, 895543); cout << "Binary search did not found " <<
my_numbers[mid] << " after " << iteration << "
Binary_Search(my_numbers, 3785111); iterations.\n";
system("pause"); return;
return 0; }
}
system("pause");
it = std::search (haystack.begin(),
haystack.end(), pointer, pointer+4); int main(){
cin>>no_of_elements;
if(!found){
cout<<"arr["<<i<<"]: ";
cin>>arr[i]; system("pause");
return 0;
cin>>key;
for(int i=0;i<no_of_elements;i++){
if(key == arr[i]){
found = true;
#include <iostream>
#include <vector>
#include <queue>
data[i] = data[j];
data[j] = tmp;
std::vector<int>::const_iterator iter =
data.begin();
{ srand(low);
return gen;
if (data.size() > 0) }
cout << endl; //useful for small lists, and for large lists where
data is
}
//already sorted
}
void BubbleSort(std::vector<int> & data)
{
int generateRandom(int low, int high);
int length = data.size();
void Shuffle(std::vector<int> & data)
{
for (int i = 0; i < length; ++i)
int length = data.size();
{
} {
swap(data, j, j+1);
} }
} }
//useful for small lists and where swapping is //expensive to move array elements
expensive
void InsertionSort(std::vector<int> & data)
// does at most n swaps
{
void SelectionSort(std::vector<int> & data)
int length = data.size();
{
{
for (int i = 0; i < length; ++i)
bool inplace = true;
{
int j = 0;
int min = i;
for (; j < i; ++j)
for (int j = i+1; j < length; ++j)
{
{
if (data[i] < data[j])
if (data[j] < data[min])
{
{
inplace = false;
min = j;
break;
}
}
}
}
if (min != i)
if (!inplace)
{
{
swap(data, i, min);
int save = data[i];
}
}
while (lowl <= highl && lowr <= highr)
{
void Merge(std::vector<int> & data, int lowl, int
highl, int lowr, int highr); if (data[lowl] < data[lowr])
else
int mid = low + (high-low)/2;
{
tmp.push_back(data[lowl++]);
MergeSort(data, low, mid);
tmp.push_back(data[lowr++]);
}
MergeSort(data, mid+1, high);
}
} }
while (lowr <= highr) int Partition(std::vector<int> & data, int low, int
high)
{
{
tmp.push_back(data[lowr++]);
int p = low;
}
for (int i = p+1; i <= high; ++i)
{
std::vector<int>::const_iterator iter =
tmp.begin(); if (data[i] < data[p])
{ if (i != p+1)
data[tmp_low++] = *iter; {
} swap(data, i, p+1);
} }
p = p + 1;
{ return p;
}
if (low >= high) return;
{ {
int dig = 0;
std::queue<int> q[10];
n = n / 10;
{
return dig;
data.clear();
{
int getDigitAt(int n, int digit);
for (int i = 0; i < qcount; ++i)
void PutInQueues(std::queue<int> q[], int
qcount, std::vector<int> & data, int digit) {
if (q[i].size() > 0)
{
std::vector<int>::const_iterator iter = {
data.begin(); int length = q[i].size();
for(; iter != data.end(); ++iter) while (length--)
{ {
int qpos = getDigitAt(*iter, digit); data.push_back(q[i].front());
} while(n != 0)
} {
} n = n/10;
} ++count;
{ }
std::vector<int>::const_iterator iter =
data.begin();
int main()
int max = 0;
{
for (; iter != data.end(); ++iter)
int a[] = {5, 6, 1, 2, 0, 8, -1, -2, 8, 0};
{
std::vector<int> data(a, a +
int numd = numDigits(*iter); sizeof(a)/sizeof(int));
{ //Bubble sort
} print(data);
//Selection sort
} SelectionSort(data);
print(data);
int numDigits(int n)
{ //Insertion sort
InsertionSort(data);
print(data);
//Merge sort
Shuffle(data);
MergeSort(data, 0, data.size()-1);
print(data);
//Quick sort
Shuffle(data);
QuickSort(data, 0, data.size()-1);
print(data);
//Radix Sort
std::vector<int> rdata(b, b +
sizeof(b)/sizeof(int));
RadixSort(rdata);
print(rdata);
system("pause");
return 0;