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

Ваш аккаунт

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

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

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

Сортировка вставками по убыванию

22K
23 мая 2007 года
SMiX
18 / / 23.05.2007
Здравствуйте. Пишу в ночь курсовую и все лабы, столкнулся с проблемой - как ни кручу, не выходит отсортировать по убыванию. Весь инет перелазал - все по возрастанию примеры. Бошка уже не варит после 6 часов работы... Подскажите, что тут нужно исправить, чтобы сортировка шла по убыванию:
Код:
float x;
int i, j;

for ( i=0; i < m; i++)
{
        x = c;


        for ( j=0; j<i-1 && c[j] < x; j++)
               c[j+1] = c[j];


        c[j+1] = x;
}

Спасибо.
247
23 мая 2007 года
wanja
1.2K / / 03.02.2003
Код:
float x;
int i, j;

for ( i=1; i < m; i++)
{
        x = c;

//Ищем j
        for ( j=0; j<i-1 && c[j] < x; j++);

//Сдвигаем вправо
        for (k=i-1;k>=j;j--)
            c[k+1] = c[k];

        c[j+1] = x;
}

Примерно так. Проверить сейчас не могу.
22K
23 мая 2007 года
SMiX
18 / / 23.05.2007
Спасибо, я так понял, вот:
Код:
float x;
int i, j, k;

for ( i=1; i < m; i++)
{
        x = c;

//Ищем j
        for ( j=0; j<i-1 && c[j] < x; j++);

//Сдвигаем вправо
        for (k=i-1;k>=j && j>0;j--)
            c[k+1] = c[k];

        c[j+1] = x;
}
Но всеравно работает неправильно...
320
23 мая 2007 года
m_Valery
1.0K / / 08.01.2007
Цитата: SMiX
Здравствуйте. Пишу в ночь курсовую и все лабы, столкнулся с проблемой - как ни кручу, не выходит отсортировать по убыванию. Весь инет перелазал - все по возрастанию примеры. Бошка уже не варит после 6 часов работы... Подскажите, что тут нужно исправить, чтобы сортировка шла по убыванию...


Код:
#include <iostream>
#include <ctime>
using namespace std;
//ф-ия сортировки вставками по возрастанию
void insertionSort(int *a,int length);
//ф-ия сщртировки вставками по убыванию
void insertSort(int *a,int length);
int _tmain(int argc, _TCHAR* argv[])
{
    srand(time(0));
    cout<<"Input size of array"<<endl;
    int size;
    cin>>size;
    int *mass = new int[size];
    for(int i = 0;i < size;++i)
        mass = rand() % 100;
    cout<<"\nArray"<<endl;
             for(int i = 0;i < size;++i)
        cout<<mass<<' ';
    cout<<endl;
    cout<<"\nArray after sorting"<<endl;
             insertionSort(mass,size);
    for(int i = 0;i < size;++i)
        cout<<mass<<' ';
    cout<<endl;
             cout<<"\nArray after sorting"<<endl;
             insertSort(mass,size);
    for(int i = 0;i < size;++i)
        cout<<mass<<' ';
    cout<<endl;
    delete[] mass;
    return 0;
}
void insertionSort(int *a,int length)
{
    int key,i;
    for(int j = 1;j<length;++j){
     key = a[j];
     i = j - 1;
     while(a > key&&i >= 0){
      a[i+1] = a;
      --i;
     }
      a[i+1] = key;
    }
}
void insertSort(int *a,int length)
{
  int key,i;
  for(int j = 1;j<length;++j){
   key = a[j];
   i = j - 1;
   while(a <= key&&i >= 0){
    a[i+1] = a;
    --i;
   }
   a[i+1] = key;
  }
}

Я не вникал в твой код,но вот сортировка вставками из книги Кормена.
Две функции,одна сортирует по возрастанию,другая по убыванию:)
Массив создаем динамически.
22K
24 мая 2007 года
SMiX
18 / / 23.05.2007
Вооо, спасибо :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог