Автор Тема: Java и quicksort - Логическа грешка!  (Прочетена 1241 пъти)

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Всички знаете за quicksort. Въпроса ми е къде е логическата грешка, че аз с моя малък капацитет не мога да я открия.
Код
GeSHi (Java):
  1. class Quicksort
  2. {
  3.    static void qsort(char items[])
  4.    {
  5.        qs(items, 0, items.length-1);
  6.    }
  7.  
  8.    private static void qs(char items[], int left, int right)
  9.    {
  10.        int i, j;
  11.        char x, y;
  12.  
  13.        i = left;
  14.        j = right;
  15.        x = items[(left+right)/2];
  16.  
  17.        do
  18.        {
  19.            while((items[i] < x) && (j < right)) i++;
  20.            while((x < items[j]) && (j > left)) j--;
  21.  
  22.            if (i <= j)
  23.            {
  24.                y = items[i];
  25.                items[i] = items[j];
  26.                items[j] = y;
  27.                i++; j--;
  28.            }
  29.        } while (i <= j);
  30.  
  31.        if (left < j) qs(items, left, j);
  32.        if (i < right) qs(items, i, right);
  33.    }
  34. }
  35.  
  36. public class QSDemo
  37. {
  38.  
  39.    public static void main(String[] args)
  40.    {
  41.        char a[] = { 'd', 'x', 'a', 'r', 'p', 'j', 'i' };
  42.        int i;
  43.  
  44.        System.out.println("Original Array is: ");
  45.  
  46.        for (i = 0; i < a.length; i++)
  47.        {
  48.            System.out.print(a[i] + " ");
  49.        }
  50.  
  51.        System.out.println();
  52.  
  53.        Quicksort.qsort(a);
  54.  
  55.        System.out.print("Sorted Array: ");
  56.  
  57.        for(i = 0; i < a.length; i++)
  58.        {
  59.            System.out.print(a[i] + " ");
  60.        }
  61.        System.out.println();
  62.    }
  63. }
  64.  

Output:
Код
GeSHi (Java):
  1. Original Array is:
  2. d x a r p j i
  3. Sorted Array: a j i p d x r

И както се вижда от output-a масива не е сортиран.
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

bop_bop_mara

  • Напреднали
  • *****
  • Публикации: 2433
  • Distribution: Debian Testing
  • Window Manager: LXDE
  • Cute and cuddly
    • Профил
Re: Java и quicksort - Логическа грешка!
« Отговор #1 -: May 03, 2010, 20:49 »
Аре фокусирай се върху 19 и 20 ред  :D :D :D
Активен

victim70

  • Напреднали
  • *****
  • Публикации: 454
  • Distribution: Gentoo, Ubuntu
  • Window Manager: Kde Xfce
    • Профил
Re: Java и quicksort - Логическа грешка!
« Отговор #2 -: May 03, 2010, 21:18 »
Аре фокусирай се върху 19 и 20 ред  :D :D :D

//офф
Марче плашиш ме вече. Отговаряш и на С, С++ и на Явата.  ::) . На какво пишеш и интересно какво  ??? .
 [_]3
Активен

"Господи, дай ми сила да променя нещата които немога да приема,
дай ми търпение да приема нещата които не мога да променя,
и ми дай мъдрост, да правя разликата между двете"

bop_bop_mara

  • Напреднали
  • *****
  • Публикации: 2433
  • Distribution: Debian Testing
  • Window Manager: LXDE
  • Cute and cuddly
    • Профил
Re: Java и quicksort - Логическа грешка!
« Отговор #3 -: May 03, 2010, 21:22 »
Аре фокусирай се върху 19 и 20 ред  :D :D :D

//офф
Марче плашиш ме вече. Отговаряш и на С, С++ и на Явата.  ::) . На какво пишеш и интересно какво  ??? .
 [_]3
Пиша на клавиатура  ;D ;D ;D Ама аз C++ не знам и не харесвам, и Java не харесвам, ама то quick sort-а не е нещо зависимо от езика.
Активен

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: Java и quicksort - Логическа грешка!
« Отговор #4 -: May 03, 2010, 22:16 »
Аре фокусирай се върху 19 и 20 ред  :D :D :D

Дай ми малко повече hint :).
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

Naka

  • Напреднали
  • *****
  • Публикации: 3467
    • Профил
Re: Java и quicksort - Логическа грешка!
« Отговор #5 -: May 03, 2010, 22:35 »
Много интерестно. Хем Quick хем Java. :D
Активен

Perl - the only language that looks the same before and after encryption.

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: Java и quicksort - Логическа грешка!
« Отговор #6 -: May 03, 2010, 22:38 »
Езика не е важен, важна е логиката.
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: Java и quicksort - Логическа грешка!
« Отговор #7 -: May 03, 2010, 22:51 »
Марчето беше права! Благодаря за което. на 19 и 20 ред има грешка, правилния код е:
Код
GeSHi (Java):
  1. while((items[i] < x) && (i < right)) i++;
  2. while((x < items[j]) && (j > left)) j--;
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
java
Настройка на програми
jojopara 3 8412 Последна публикация Feb 03, 2003, 13:06
от Nerdboy
Приложение на Java под конзола
Настройка на програми
laik 3 6427 Последна публикация Jun 07, 2004, 19:23
от v_badev
приложение на Java
Общ форум
laik 3 6977 Последна публикация Jun 17, 2004, 13:10
от JOKe
JAVA програмиране
Общ форум
smitev 8 8346 Последна публикация Jul 13, 2004, 00:26
от JOKe
За Java програмисти
Общ форум
smitev 1 6109 Последна публикация Sep 15, 2004, 21:49
от JOKe