Форум программистов, компьютерный форум, киберфорум
Наши страницы

Быстрая сортировка. Что не так? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нужно ввести слово и сохранить его в переменной http://www.cyberforum.ru/cpp-beginners/thread1153990.html
Добрый день форумчане, прошу помочь как начинающему программисту,который сдает ЕГЭ по информатике и ИКТ. Дело в том, что нужно вводить слово, и его сохранить, известно только максимальное кол-во...
C++ Нахождение номера строки, в которой расположен максимальный элемент Составить программу: Нахождение номера строки, в которой расположен максимальный элемент любого столбца двумерного массива. Если элементов с максимальным значением в этом столбцн несколько, то... http://www.cyberforum.ru/cpp-beginners/thread1153987.html
C++ Программа котрая ищет дубликаты в целочисленном массиве и если они есть выводит результат на экран
Я не могу понять почему когда присваиваешь элементы одного массива другому элементы второго массива всё равно равны 0 #include <iostream> #include <conio.h> using namespace std;
C++ Посчитать количество строк без 0
можете объяснить принцип работы программы,которая считает количество строк без 0 #include "stdafx.h" #include <iostream> #include <iomanip> #include <ctime> using namespace std; int main() { ...
C++ Нелинейное уравнение: методы деления отрезка пополам и касательных http://www.cyberforum.ru/cpp-beginners/thread1153947.html
Помогите пожалуйста решить задачку, Решить нелинейное уравнение с точностью 0,001 методом а) деления отрезка пополам; в) касательных Выполнение задания: • Определить начальное приближение...
C++ Сроки, файлы: вывести предложение, в котором хотя бы одно слово повторяется Помогите пожалуйста написать программу, без использования библиотечных функций работы со строками. Программа принимает в качестве аргумента имя файла и печатает предложения, в которых хотя бы одно... подробнее

Показать сообщение отдельно
c0cu4
0 / 0 / 0
Регистрация: 06.12.2012
Сообщений: 13

Быстрая сортировка. Что не так? - C++

22.04.2014, 11:03. Просмотров 235. Ответов 3
Метки (Все метки)

Всем привет. Задание - написать квиксорт с уменьшенной глубиной рекурсии, то есть "сначала сортировать более короткий кусок, а затем вместо повторного вызова переходить к началу процедуры с новыми значениями указателя на массив и его длины"
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
void f9(double *a, int n)
{
  double x, tmp, *b = a;
  int i, j, length = n;
 
  while (length > 1)
    {
      x = b[length/2];
 
      for (i = 0; i < length; i++)
        if (b[i] >= x)
          break;
 
      for (j = length - 1; j > i ; j--)
        if (b[j] <= x)
          break;
 
      while (i <= j)                                 //начинается обмен
        {
          tmp = b[j];
          b[j] = b[i];
          b[i] = tmp;
          i++;
          j--;
      
          for (; i < length - 1; i++)
            if (b[i] >= x)
          break;
 
          for (; j >= i ; j--)
            if (b[j] <= x)
          break;
        }                                            //заканчивается обмен 
 
      if (length - i > j)                            //дальше находим меньшую часть
        {                                            //и вызываем для неё еще раз
          f9(b, j);                                  //наибольшая, по идее, продолжается
          b = b + i;                                 //в цикле while (length > 1)
          length = length - i;
        }
      else
    {
      if (length > i)
            f9(b + i, length - i);
          length = j;
        }
    }
}
Всё никак не могу понять, что не так. Буду благодарен за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.