Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |

07.12.2006, 14:58
|
|
Members of Antichat - Level 5
Регистрация: 05.04.2006
Сообщений: 1,066
Провел на форуме: 3493315
Репутация:
1228
|
|
Сортировки. Help!
Нужны 2 функции сортировки, написанные на С++ по следующим алгоритмам:
- Обменная сортировка с разделением
- Сортировка слиянием
Может у кого завалялись где, буду очень благодарен!
Нужно очень срочно (конкретно сегодня), самому писать прост нет времени.
Последний раз редактировалось nc.STRIEM; 07.12.2006 в 15:10..
|
|
|

07.12.2006, 15:44
|
|
Участник форума
Регистрация: 06.04.2006
Сообщений: 257
Провел на форуме: 367179
Репутация:
76
|
|
Сортировка с разделением
Код:
#include "iostream.h"
#include "stdio.h"
void quickSort( int *array, int L, int R ){
int i, j;
int item, temp;
i = L;
j = R;
item = array[(L + R)/2];
while ( i <= j ){
while ( array[i] < item ) i++;
while ( item < array[j] ) j--;
if ( i <= j ){
temp = array[i];
array[i] = array[j];
array[j] = temp;
i++;
j--;
}
}
if ( L < j ) quickSort( array, L, j );
if ( i < R ) quickSort( array, i, R );
}
void main(){
int i, size;
int *array;
cout << "Quick Sort.\nEnter array dimension: ";
cin >> size;
array = new int[size];
cout << "Enter " << size << " elements: ";
for ( i = 0; i < size; i ++ ){
cin >> array[i];
}
quickSort( array, 0, size - 1 );
cout << "Your array after sorting: ";
for ( i = 0; i < size; i ++ ){
cout << array[i] << " ";
}
cout << "\nPress \"Enter\" to continue..." << endl;
getchar();
}
Сортировка слиянием
Код:
template<class T>
void merge(T a[], long lb, long split, long ub) {
// Слияние упорядоченных частей массива в буфер temp
// с дальнейшим переносом содержимого temp в a[lb]...a[ub]
// текущая позиция чтения из первой последовательности a[lb]...a[split]
long pos1=lb;
// текущая позиция чтения из второй последовательности a[split+1]...a[ub]
long pos2=split+1;
// текущая позиция записи в temp
long pos3=0;
T *temp = new T[ub-lb+1];
// идет слияние, пока есть хоть один элемент в каждой последовательности
while (pos1 <= split && pos2 <= ub) {
if (a[pos1] < a[pos2])
temp[pos3++] = a[pos1++];
else
temp[pos3++] = a[pos2++];
}
// одна последовательность закончилась -
// копировать остаток другой в конец буфера
while (pos2 <= ub) // пока вторая последовательность непуста
temp[pos3++] = a[pos2++];
while (pos1 <= split) // пока первая последовательность непуста
temp[pos3++] = a[pos1++];
// скопировать буфер temp в a[lb]...a[ub]
for (pos3 = 0; pos3 < ub-lb+1; pos3++)
a[lb+pos3] = temp[pos3];
delete temp[ub-lb+1];
}
Не уверен, что это точно такие сортировки, какие тебе нужны. Посмотри еще http://algolist.manual.ru/sort/
|
|
|

07.12.2006, 15:54
|
|
ВАША реклама ТУТ!!
Регистрация: 01.07.2005
Сообщений: 647
Провел на форуме: 3478464
Репутация:
714
|
|
Найди на последнем DVD-хакера, который 9Гб, там все алгоритмы сортировок на С и на Pascal. У кого есть, выложите где-нить, многим пригодится, линк сюда.
__________________
My ICQ: 296@463@859 ONLY!! Please check your list!!
И здесь могла бы быть ВАША реклама!!!
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|