Быстрая сортировка - не работает должным образом, вы можете найти, где мне не хватает логики - PullRequest
0 голосов
/ 28 июля 2011
class test
 {
     static int arr[]={1,6,3,4,5,8,11};
     static int s=0,temp=0,e=0;
   public static void main(String [] args)throws Exception
   {
     QS(arr,0,arr.length-1);

    for(int i=0;i<arr.length;i++)
    System.out.print(arr[i]+"   ");

}

    public static void QS(int arr[] ,int i,int j)throws Exception
 {
int key=i;
int low=i+1;
int up=j;
int temp=0;
  System.out.println(key);   
 while(low<=up)
{
  do{
     low++;
    }while(arr[low]<arr[key]);

  do{
     up--;
    }while(arr[up]>arr[key]); 

 if(low<=up)
{   
   temp=arr[up];
   arr[up]=arr[low];
   arr[low]=temp;            
 }  
 }
   System.out.println(low+"++++"+up);

temp=arr[up];
arr[up]=arr[key];
arr[key]=temp;
if(0<up-1)        
      QS(arr,i,up-1);
if(low< arr.length-2)
      QS(arr,low,j);
   }
   }

Ответы [ 2 ]

2 голосов
/ 28 июля 2011

Так как это выглядит как домашнее задание, вот мой совет:

После шага разбиения распечатайте ваш массив вместе со значением и положением оси и визуально убедитесь, что разбиение выполнено правильно. Если этого не произошло (как я подозреваю, так), добавьте еще несколько операторов печати - или используйте отладчик - чтобы понять, в чем проблема с вашей программой.

Как только разделение заработает, перейдите к рекурсии. Это сравнительно просто: все, что вам нужно сделать, это убедиться, что QS вызывает себя с правильными i и j (оба раза), и что базовый случай обрабатывается правильно.

1 голос
/ 28 июля 2011

Я думаю, проблема в том, чтобы получить опору. Вы можете написать отдельный метод для разбиения на разделы и, вероятно, попытаться напечатать его и проверить, правильно ли выводится его печать. Вы можете сослаться на ссылку ниже для быстрой сортировки, она также предоставляет организованный фрагмент кода. http://www.algolist.net/Algorithms/Sorting/Quicksort

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...