Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите переделать сортировку, нужна сортировка методом Шелла

86K
24 октября 2013 года
Мария)
4 / / 24.10.2013
#include "stdafx.h"
#include <iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
int main ()
{const int n=3;const int m=3;
int a[n][m];
srand(time(NULL));
int i,j;
for (i=0;i<n;i++)
{for(j=0;j<m;j++)
a[j]=rand()%10;}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
cout « a[j]« "t";
}
cout « "nnnn";
}
for(int c=0;c<=(n*m);c++)//колличество проходов
{
//в строках упорядочиваем
for(i=0;i<n;i++)
{
for(j=0;j<m-1;j++)
{
if(a[j]>a[j+1])
{
int t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}}
//вывод на экран после сортировки

cout« "Posle sortirovki""nnnn";
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
cout « a[j] « "t";
}
cout « "nnnn";
}
system("pause");

return 0;}
412
24 октября 2013 года
grgdvo
323 / / 04.07.2007
В Гугль!!! На такие вопросы легко отвечает Гугль!!
http://completepascal.blogspot.ru/2010/09/blog-post_999.html
86K
24 октября 2013 года
Мария)
4 / / 24.10.2013
да тут надо изменить всего несколько строк с сортировке, но я не знаю какие((((
86K
25 октября 2013 года
Romakky
19 / / 25.10.2013
загугли в гугл
86K
25 октября 2013 года
Мария)
4 / / 24.10.2013
да я знаю как выглядит этот метод, но не могу изменить, иначе бы я не скидывала сюда.
11K
25 октября 2013 года
xAtom
65 / / 17.01.2011
Код:
#include <iostream>
#include <stdlib.h>
using std::cout;




void shell_sort(int* arr, int size, bool (*cmp)(int, int)) {
    int j, num;
    for(int m = size >> 1; m > 0; m >>= 1) {
        for(int k = 0; k < m; k++) {

              for(int i = m + k; i < size; i += m) {
                    num = *((arr) + i);
                    j   = k;
                    while((j < i) && (cmp(arr[j], num)))
                          j += m;
                    for(int p = i - m; p >= j; p -= m)
                          *((arr) + p + m) = *((arr) + p);
                    *((arr) + j) = num;
              }
         }
    }
}



// компаратор для сортировки по возрастанию
bool cmp_asc(int a, int b) { return (a < b); }

// компаратор для сортировки по убыванию
bool cmp_desc(int a, int b) { return (a > b); }





int main(void){
    int arr[24];
    int size = sizeof(arr)/sizeof(arr[0]);
    for(int i = 0; i < size; arr[i++] = rand() % 100);

    // сортируем по возрастанию
    shell_sort(arr, size, cmp_asc);
    for(int i = 0; i < size; i++)
         cout << arr[i] << ' ';
    cout.put('n');


    for(int j = 0; j < size; arr[j++] = rand() % 100);
    // сортируем по убыванию
    shell_sort(arr, size, cmp_desc);
    for(int i = 0; i < size; i++)
         cout << arr[i] << ' ';
    cout.put('n');
    return 0;
}
Проверка рабочей лошадки
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог