Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2011, 13:21   #1
Alex1205
Новичок
Джуниор
 
Регистрация: 14.01.2011
Сообщений: 1
По умолчанию сортировка массива

Доброе время суток,уважаемые коллеги!помогите с задачей.не могу определиться,какой сортировкой лучше сделать:
Дан массив чисел размерностью 10 элементов. Написать функцию, которая сортирует массив по возрастанию или по убыванию, в зависимости от третьего параметра функции. Если он равен 1, сортировка идет по убыванию, если 0, то по возрастанию. Первые 2 параметра функции - это массив и его размер, третий параметр по умолчанию равен 1.
Alex1205 вне форума Ответить с цитированием
Старый 19.02.2011, 16:23   #2
Mrbober
Пользователь
 
Регистрация: 18.02.2011
Сообщений: 24
По умолчанию

Функция с сортировкой, остольное сам доделай, там осталось чуток.
Код:
#include "stdafx.h"
#include <stdio.h>
int fm(int n1, int n2, int *l )
{		
int m,t,w;
w=n1;
t=l[n1];
for (m=n1+1; m<=n2;m++ )
{
   	if(l[m]<t)
	{
	w=m;
	t=l[m];
	}
}	
return(w);
}
void swap (int *a, int *b)
{
int q;
q=*a;
*a=*b; 
*b=q; 
}
int main(int argc, char* argv[])
{
int l[]={12, 1, 123, 143, 1563, 765, 54567, 132, 1390, 458, 21, 10, 9, 112, 113};
int n=12, n2, q, i, w, n1, y, t, o;
n1=0;
n2=n;
for ( n1=0; n1<n ; n1++ )
{
w=fm(n1, n2, &l[0]);
swap ( &l[n1], &l[w]);
//printf ( " %d ",  l[n1] ) ;
}
//i=0;
for ( y=0; y<=n ; y++ )
{
	printf ( " %d ",  l[y] ); 
} 
return 0;
}
Mrbober вне форума Ответить с цитированием
Старый 19.02.2011, 16:23   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

ИМХО, не морочить голову и делать сортировку пузырьком.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.02.2011, 16:58   #4
alex_x_x
Форумчанин
 
Регистрация: 31.01.2011
Сообщений: 160
По умолчанию

Код:
#include <algorithm>
#include <iterator>
#include <iostream>
#include <functional>

void f( int* arr, int n, int param ){ 
  if( 1 == param ) std::sort( arr, arr+n, std::greater<int>() );
  else std::sort( arr, arr+n, std::less<int>() );
}

int main(){
  int arr[] = {3,5,1,5,3,4,3,1};
  f( arr, sizeof(arr)/sizeof(arr[0]), 1 );
  std::copy( arr, arr + sizeof(arr)/sizeof(arr[0]),
                        std::ostream_iterator<int>(std::cout," ") );
}
alex_x_x вне форума Ответить с цитированием
Старый 19.02.2011, 17:12   #5
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Код:
void f( int* arr, int n, int param ){ 
  if( 1 == param ) std::sort( arr, arr+n, std::greater<int>() );
  else std::sort( arr, arr+n, std::less<int>() );
}
Не нравится мне такая запись. Лучше так:
Код:
void f( int* arr, int n, int sort_by_growth)
{ 
  std::sort(arr, arr+n, sort_by_growth ? std::greater<int>() : std::less<int>());
}
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 19.02.2011, 19:20   #6
ololo-schoolboy
Форумчанин
 
Регистрация: 25.12.2010
Сообщений: 247
По умолчанию

вставку или пузырек
ololo-schoolboy вне форума Ответить с цитированием
Старый 19.02.2011, 23:32   #7
alex_x_x
Форумчанин
 
Регистрация: 31.01.2011
Сообщений: 160
По умолчанию

Obey-Kun, да я так сперва и написал, чет компилятор ругался
alex_x_x вне форума Ответить с цитированием
Старый 20.02.2011, 17:01   #8
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Alex1205, если для себя, то воспользуйтесь кодом alex_x_x, если для контрольной в учебное заведение, то без разницы. Быстрая сортировка или вставками.

Obey-Kun, ну раз уж вы постоянно всем и всюду указываете как именовать переменные, позвольте заметить, что в большинстве ЯП сортировка "по возрастанию" определяется как "ascending", поэтому sort_by_growth смотрится, мягко говоря, не в тему.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 20.02.2011, 18:19   #9
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Цитата:
Obey-Kun, ну раз уж вы постоянно всем и всюду указываете как именовать переменные, позвольте заметить, что в большинстве ЯП сортировка "по возрастанию" определяется как "ascending", поэтому sort_by_growth смотрится, мягко говоря, не в тему.
спасибо!
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка массива методами предсортировки и слияния, и пирамидальная сортировка. lenny_24 Помощь студентам 2 17.04.2011 18:57
сортировка массива Superlotles Общие вопросы C/C++ 2 05.04.2010 10:21
Сортировка массива Paladast Помощь студентам 2 18.01.2010 16:28
Сортировка массива Kraven Общие вопросы Delphi 3 25.06.2008 18:22
Сортировка массива...? Roberto Помощь студентам 2 11.04.2008 13:32