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;
}
Сортировка вставками по убыванию
Здравствуйте. Пишу в ночь курсовую и все лабы, столкнулся с проблемой - как ни кручу, не выходит отсортировать по убыванию. Весь инет перелазал - все по возрастанию примеры. Бошка уже не варит после 6 часов работы... Подскажите, что тут нужно исправить, чтобы сортировка шла по убыванию:
Код:
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;
}
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;
}
Примерно так. Проверить сейчас не могу.
Код:
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;
}
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;
}
Цитата: 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;
}
}
#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;
}
}
Я не вникал в твой код,но вот сортировка вставками из книги Кормена.
Две функции,одна сортирует по возрастанию,другая по убыванию:)
Массив создаем динамически.
Вооо, спасибо :)