{C++ билдер } Сортировка.
:confused: :confused:
2 - http://www.codenet.ru/cat/Applications/Algorithms/Sorting/
3 - algolist.manual.ru (в Полезных ссылках смотрим сайты)
...
Не совсем понятно зачем 3 алгоритма для сортировки 1 последовательности символов ? :eek: Ну разве чтоб посмотреть как каждый из них работает,имхо.Используем быструю сортировку,пузырек и сортировку вставками.1-ым шагом сортируем первую треть массива,2-м - 2\3 массива и последним сортируем весь массив.1-й и 2-й шаг все равно не имеют смысла,всю последовательность можно отсортировать сразу.Может я чего то не понял ?
using namespace std;
void insertionSort(char *a,int length);
void BSort(char *a, int length);
void QSort(char *a,int first,int last);
int _tmain(int argc, _TCHAR* argv[])
{
const int size = 10;
char mass[size] = {'9','4','3','7','1','5','8','2','0','6'};
for(int i = 0;i < size;++i)
cout<<mass<<' ';
cout<<endl;
cout<<"After Quick Sort ; 0 - 3 position "<<endl;
QSort(mass,0,size - 7);
for(int i = 0;i < size;++i)
cout<<mass<<' ';
cout<<endl;
cout<<"After Buble Sort ; 0 - 6 position "<<endl;
BSort(mass,size - 3);
for(int i = 0;i < size;++i)
cout<<mass<<' ';
cout<<endl;
cout<<"After Insert Sort ; 0 - 9 position "<<endl;
insertionSort(mass,size);
for(int i = 0;i < size;++i)
cout<<mass<<' ';
cout<<endl;
return 0;
}
void insertionSort(char *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 BSort(char *a, int length)
{
bool flag = true;
int i, j;
char temp;
for (j = 1; ; j++)
{
for(i = 0; i < length - j; i++)
if (a > a[i + 1])
{
temp = a;
a = a[i + 1];
a[i + 1] = temp;
flag = false;
}
if(flag)
break;
flag = true;
}
}
void QSort(char *a,int first,int last)
{
if(first < last)
{
int i;
int j;
char temp;
int point;
point = a[first];
i = first;
j = last;
while(i < j)
{
while(a <= point && i < last)
i++;
while(a[j] >= point && j > first)
j--;
if(i < j)
{
temp = a;
a = a[j];
a[j] = temp;
}
}
temp = a[first];
a[first] = a[j];
a[j] = temp;
QSort(a, first, j - 1);
QSort(a, j + 1, last);
}
}
Почти все то же самое,язык то один;) По памяти,должно быть так,если не прав поставлю сейчас Builder 6 и проверю...:)
#include <stdio.h>
//....ф-ии те же
void main(){
//...код
}
// Ф-ии те же
Думаю автор топика пишет все же GUI приложение, а не консольное. Поэтому не все то же самое. Функции сортировки оставляем без изменений. Iostream и stdio не нужны. То, что выполнялось в main(), засунуть в обработчик кнопки. Ну и заменить cout вывод в элементы формы, например Memo или StringGrid.