Другие языки программирования и технологии

Помогите пожалуйста написать программу на c++. Упорядочить элементы одномерного массива по убыванию.

АК
Андрей К
178
#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int main() {
srand(time(0));
cout << "random array:";
int a[10];
generate(begin(a), end(a), []() { return rand() % 100; });
for_each(begin(a), end(a), [](int e) { cout << ' ' << e; });
sort(begin(a), end(a), [](int x, int y) { return x > y; });
cout << "\nsorted array:";
for_each(begin(a), end(a), [](int e) { cout << ' ' << e; });
return 0;
}

ЗЫ: VC++ 2010
Вадим Латыпов
Вадим Латыпов
78 919
Лучший ответ
ну воспользуйтесь к примеру пузырьковым методом.. .
для сортировки массива используется около 4 алгоритмов.. . поищиите оптимальный для ваших знаний
#include <algorithm>
// ...
bool cmp (int i,int j) { return (i>j); }
// ...
std::sort(array, array + n, cmp);
> Упорядочить элементы одномерного массива по убыванию.

#include <iostream>
#include <locale>

#include <iterator>
#include <algorithm>
#include <functional>

#include <stdlib.h>
#include <time.h>

#define FROM -10
#define TO 10

struct R
{
int operator()() const
{
return rand() % (TO - FROM + 1) + FROM;// -10..10
}
};

template < typename FwdIterator >
void array_sort(FwdIterator begin, FwdIterator end)
{
typedef typename std::iterator_traits< FwdIterator >::value_type T;
std::sort(begin, end, std::greater< T >());
}

int main()
{
setlocale(LC_ALL, "");
srand((unsigned) time(NULL));

int arr[20];
std::generate_n(arr, sizeof(arr) / sizeof(arr[0]), R());

typedef std::ostream_iterator< int > O;

std::cout << "Array: ";
std::copy(arr, arr + sizeof(arr) / sizeof(arr[0]), O(std::cout, " "));
std::cout << std::endl;

array_sort(arr, arr + sizeof(arr) / sizeof(arr[0]));

std::cout << "Sorted: ";
std::copy(arr, arr + sizeof(arr) / sizeof(arr[0]), O(std::cout, " "));
std::cout << std::endl;

return 0;
}

проверка: hxxp://codepad .org/ssN3ZmsV
Ramil Saqirov
Ramil Saqirov
1 769

Похожие вопросы