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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2014, 21:49   #1
Merkava
 
Регистрация: 21.05.2014
Сообщений: 9
По умолчанию

Сортирую четыре массива.Не могу заставить данную сортировку, сортировать по убыванию.Помогите пожалуйста.

Код:
int StraightInsertionSort( int *m, int n ) 
{
	int i, j, temp, col1=0;
    for (i = 1; i < n; i++)
    {
        temp = m[i];
        col1+=1;
    for (j = i - 1; j >= 0; j--)
    {
    
        if (m[j] < temp)
            break;
 
        m[j + 1] = m[j];
        col1+=1;
    }
        m[j] = temp;
        col1+=1;
}
Теперь сортирует по убыванию, но когда возвращает кол-во перестановок - везде одно и то же число.Я неправильно запоминаю перестановки или вот эта сортировка вообще неправильно работает.Можно ваш пример сортировки простыми вставками?
Код:
int StraightInsertion ( int *a, int n ) 
{
    int i, j, x, col1=0;
    for (i=1; i<n; i++)
    {
    x=a[i];
    col1+=1; 
    for (j=i; x>a[j-1]&&j; j--)
    a[j]=a[j-1];
    a[j]=x;
    col1+=2;
}
return col1;
}

Последний раз редактировалось Stilet; 31.05.2014 в 16:29.
Merkava вне форума Ответить с цитированием
Старый 31.05.2014, 16:31   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Вот сама сортировка... В Википедии отличный пример

Код:
#include <iostream>

using namespace std;

const int N = 10;

void InsertionSort(int A[N]);

int main() { 
	int A[N] = {6, 5, 3, 1, 8, 7, 2, 4, 1, 0};

	for(int i = 0; i < N; i++) {
		cout << " [" << A[i] << "]";
	}
	cout << endl;

	InsertionSort(A);

	for(int i = 0; i < N; i++) {
		cout << " [" << A[i] << "]";
	}
	cout << endl;
	return 0;
}

void InsertionSort(int A[N]) {
	for(int i = 1; i < N; i++) {
		int CurEl = A[i];
		int Index = i - 1;
		while(Index >= 0 && A[Index] > CurEl) {
			A[Index+1] = A[Index];
			A[Index] = CurEl;
			Index--;
         }          
    }
}
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 31.05.2014, 21:49   #3
Merkava
 
Регистрация: 21.05.2014
Сообщений: 9
По умолчанию

Bugrimov, вот так получилось, местами похоже на правду.
Merkava вне форума Ответить с цитированием
Старый 31.05.2014, 23:17   #4
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Я рад, надеюсь смог помочь!
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка простыми вставками Akcentbek Паскаль, Turbo Pascal, PascalABC.NET 1 30.04.2012 01:04
Сортировка списка методом выбора и простыми вставками Bottane4ka Помощь студентам 0 24.03.2012 20:35
сортировка простыми вставками Valentinka25 Паскаль, Turbo Pascal, PascalABC.NET 1 03.04.2011 22:48
Сортировка массива простыми вставками на Delphi Алексей777911 Помощь студентам 3 21.04.2010 18:31