Форум программистов, компьютерный форум CyberForum.ru

Quiсk sort - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Даны два двухмерных массива одинаковых размеров. Создать третий массив такого же размера, каждый элемент которого равен 100 http://www.cyberforum.ru/cpp-beginners/thread43617.html
Даны два двухмерных массива одинаковых размеров. Создать третий массив такого же размера, каждый элемент которого равен 100, если соответствующие элементы двух первых массивов имеют одинаковый знак, и равен нулю в противном случае...
C++ Дан двухмерный массив.Найти сумму элементов побочной диагонали и сумму элементов главной диагонали Дан двухмерный массив.Найти сумму элементов побочной диагонали и сумму элементов главной диагонали... Программу надо в С. http://www.cyberforum.ru/cpp-beginners/thread43613.html
C++ НОД для трех чисел.
Здорова народ! Как найти найболшый общий делитель для трьох чисел?
C++ Дан двухмерный массив.Выямнить является ли произведение элементов заданного столбца массива трехзначным числом
Дан двухмерный массив.Выямнить является ли произведение элементов заданного столбца массива трехзначным числом
C++ Сформировать два массива.... http://www.cyberforum.ru/cpp-beginners/thread43599.html
Дан массив из 20 элементов. Сформировать два массива размером 10, включив в первый из них элементы с четными номерами, во второй с нечетными. Не могу сформировать массив, Если не сложно напишите всю программу... Добавлено через 2 минуты 5 секунд сам пробывал писать: #include<stdio.h> main() { int a={3,4,5,7,3,5,3,3,5,3,3,9,0,6,7,4,5,5,8,3}, b, c, i; printf("c=");
 

Показать сообщение отдельно
Mailto
0 / 0 / 0
Регистрация: 10.07.2009
Сообщений: 5
10.07.2009, 19:53  [ТС]     Quiсk sort
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Произошла перегрузка стека при рекурсивном вызове функции sort.
Тебе нужно смотреть в сторону рекурсивных функций и проблем с ними связанными (как раз таки возможная перегрузка стека).
Для новичка это довольно таки сложная тема, но иначе тебе будет не понять эту ошибку (кстати не твою).
по примеру википедии http://ru.wikipedia.org/wiki/%D0%91%...B2%D0%BA%D0%B0
добавил в начало функции сортировки проверку границ.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <iostream.h>
#pragma argsused
 
#pragma hdrstop
 
//---------------------------------------------------------------------------
int a[13];
//---------------------------------------------------------------------------
void swap(int &a,int &b)   //
{                          //
int c=a;                   //
a=b; b=c;                  //
}                          //
//---------------------------------------------------------------------------
void sort (int l,int r)
{
if (r<l) return; //новая строчка
int i=l,j=r;
int x=a[l+random(r-l)+1];          //
while (i<=j)                       //
      {
      while (a[i]<x) i++;
      while (a[j]>x) j--;
            if (i<=j)
            swap(a[i],a[j]);
       }
 
sort(i,r);
sort(l,j);
 
}
 
 
//---------------------------------------------------------------------------
int main(int argc, char* argv[])
{
randomize();
for(int i=0;i<13;i++)             //
        {                         //
        a[i]=random(199)+1;       // 
        cout<<a[i]<<"   ";        // 
        }                         //
cout<<endl;
sort(0,12);                 //
for(int i=0;i<13;i++)             //
        {                         //
        cout<<a[i];               //
        cout<<"  ";               //
        }                         //
cin>>"";                    //
}
//---------------------------------------------------------------------------
 
Текущее время: 10:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru