#include <iostream>
#include <algorithm>
using namespace std;
int main ()
{
int a[10]={20,2,5,4,3,45,34,1,79,4};
sort(a,a+10);
for(int i=0; i<10; i++)
cout<<a[i]<<" ";
return 0;
}
#include <iostream>
#include <algorithm>
using namespace std;
int main ()
{
int a[10]={20,2,5,4,3,45,34,1,79,4};
sort(a,a+10);
for(int i=0; i<10; i++)
cout<<a[i]<<" ";
return 0;
}
template<class T>
inline void insertSortGuarded(T a[], long size) {
T x;
long i, j;
T backup = a[0];
setMin(a[0]);
for ( i=1; i < size; i++) {
x = a[i];
for ( j=i-1; a[j] > x; j--)
a[j+1] = a[j];
a[j+1] = x;
}
for ( j=1; j<size && a[j] < backup; j++)
a[j-1] = a[j];
a[j-1] = backup;
}
template <class T>, для большинства POD-типов будет работать (с целочисленными, вещественными и char-ами точно работает)
void setMin(T& val) {
val = static_cast<T>(std::numeric_limits<double>::min());
}
...
int main() {
const int size = 1000;
int a[size] = {0};
srand((unsigned int)time(0)); // randomize
for(int i = 0; i < size; i++) {
a[i] = rand() % 2000; // случайные числа 0 .. 1999
}
for(int i = 0; i < size; i++) {
cout << a[i] << " ";
}
cout << endl;
int time = GetTickCount(); // засекли время
insertSortGuarded<int>(a, size); // выполнили сортировку
time = GetTickCount() - time; // остановили время
for(int i = 0; i < size; i++) {
cout << a[i] << " ";
}
cout << endl;
cout << "time = " << time << endl; // вывели время
return 0;
}
...
int main() {
const int size = 1000;
int a[size] = {0};
srand((unsigned int)time(0)); // randomize
for(int i = 0; i < size; i++) {
a[i] = rand() % 2000; // случайные числа 0 .. 1999
}
for(int i = 0; i < size; i++) {
cout << a[i] << " ";
}
cout << endl;
int time = GetTickCount(); // засекли время
insertSortGuarded<int>(a, size); // выполнили сортировку
time = GetTickCount() - time; // остановили время
for(int i = 0; i < size; i++) {
cout << a[i] << " ";
}
cout << endl;
cout << "time = " << time << endl; // вывели время
return 0;
}
#include <iostream>
#include <windows.h>
...
int main() {
const int size = 1000;
int a[size] = {0};
srand((unsigned int)time(0)); // randomize
for(int i = 0; i < size; i++) {
a[i] = rand() % 2000; // случайные числа 0 .. 1999
}
for(int i = 0; i < size; i++) {
cout << a[i] << " ";
}
cout << endl;
int time = GetTickCount(); // засекли время
insertSortGuarded<int>(a, size); // выполнили сортировку
time = GetTickCount() - time; // остановили время
for(int i = 0; i < size; i++) {
cout << a[i] << " ";
}
cout << endl;
cout << "time = " << time << endl; // вывели время
return 0;
}
srand((unsigned int)time(0))?
template <class T>
void work() {
// и здесь производить все операции, которые пользователь выберет
// из меню Message(), инстанцируя шаблоны сортировок типом T, например:
T a[size];
// для инициализации массива "a" можно написать шаблонную
// функцию Random, и сделать ее явные специализации для любого
// типа, с которым ты хочешь работать...
// Ну, а потом - ...
int time=GetTickCount();
BubbleSortVer2<T>(a, size);
time=GetTickCount()-time;
}
int main() {Идея понятна?
cout << "1: int; 2: double; 3: char; 4: string" << endl;
cin >> choice;
switch(choice) {
case 1:
Work<int>();
break;
case 2:
Work<double>();
break;
case 3:
Work<char>();
break;
case 4:
Work<string>();
break;
}
}
template <class T>
void work() {
// и здесь производить все операции, которые пользователь выберет
// из меню Message(), инстанцируя шаблоны сортировок типом T, например:
T a[size];
// для инициализации массива "a" можно написать шаблонную
// функцию Random, и сделать ее явные специализации для любого
// типа, с которым ты хочешь работать...
// Ну, а потом - ...
int time=GetTickCount();
BubbleSortVer2<T>(a, size);
time=GetTickCount()-time;
}
int main() {Идея понятна?
cout << "1: int; 2: double; 3: char; 4: string" << endl;
cin >> choice;
switch(choice) {
case 1:
Work<int>;
break;
case 2:
Work<double>;
break;
case 3:
Work<char>;
break;
case 4:
Work<string>;
break;
}
}
void SetMin(string& val) {, иначе будет ошибка...
val = "";
}
void SetMin(string& val) {, иначе будет ошибка...
val = "";
}
int ch,size;
// Это как понимать? Сначала описываешь массив непонятно какого размера ...
T a[size];
// и только потом вводишь собственно размер?
cout<<"Please, enter the size of massive to sort!"<<endl;
cin>>size;
int ch, size;
cout<<"Please, enter the size of massive to sort!"<<endl;
cin>>size;
T *a = new T[size];
... // здесь работа с массивом, ничего не меняется
delete a;
int ch,size;
// Это как понимать? Сначала описываешь массив непонятно какого размера ...
T a[size];
// и только потом вводишь собственно размер?
cout<<"Please, enter the size of massive to sort!"<<endl;
cin>>size;
int ch, size;
cout<<"Please, enter the size of massive to sort!"<<endl;
cin>>size;
T *a = new T[size];
... // здесь работа с массивом, ничего не меняется
delete a;