2013-06-11 3 views
1

Я попытался преобразовать этот псевдокод вставки в java, но не получил правильный вывод. Вот псевдокодПреобразование вставки Сортировка псевдокода для запуска Java-кода

INSERTION-SORT(A) 
1 for j ← 2 to length[A] 
2 do key ← A[j] 
3  ▹ Insert A[j] into the sorted sequence A[1 j - 1]. 
4  i ← j - 1 
5  while i > 0 and A[i] > key 
6  do A[i + 1] ← A[i] 
7   i ← i - 1 
8  A[i + 1] ← key 

А вот мой Java-код

public class Insertion { 

    public static void print(int[] A){   
     for(int i = 0; i > A.length; i++){    
      System.out.print(A[i] + " ");    
      }   
     System.out.println(); 
    } 

    public static void insertionSort(int[] A){   
     for(int j = 1; j < A.length; j++){ 

      int key = A[j]; 
      int i = j - 1; 

      while(i >= 0 && A[i] > key){ 
       A[i + 1] = A[i]; 
       i = i - 1; 
      }    
      key = A[i + 1];    
     }   
     print(A); 
    } 

    public static void main(String[] args){   
     int[] x = {5,2,4,6,1,3}; 
      insertionSort(x); 
    } 
} 

Что печатает только тот же массив A. Не сортированные или что-либо просто {5,2,4,6,1, 3}.

+0

'J> A.length'? –

+0

Зная основную идею, нужно просто написать ее самостоятельно, вы вставляете каждый элемент из массива inordered в упорядоченный, при каждой вставке, которую вы держите в заказе, нажав текущий элемент, пока он больше не нарушит условие порядка –

ответ

1
public class InsertionSort { 

    private static long[] arr; 

    /** 
    * Run Insertion Sort algorithm 
    * 
    * @param array data structure used to run the algorithm 
    */ 
    public static void run(long[] array) { 
     arr = array; 
     int j; 

     for (int i = 1; i < arr.length; i++) { 
      long temp = arr[i]; 
      j = i; 
      while (j > 0 && temp <= arr[j - 1]) { 
       arr[j] = arr[j - 1]; 
       j--; 
      } 
      arr[j] = temp; 
     } 
    } 
} 
0
public class Insertion { 

    public static void print(int[] A){ 

     for(int i = 0; i > A.length; i++){ 

      System.out.print(A[i] + " "); 

      } 

     System.out.println(); 
    } 

    public static void insertionSort(int[] A){ 

     for(int j = 1; j < A.length; j++){ 

      int key = A[j]; 
      int i = j - 1; 

      while(i >= 0 && A[i] > key){ 
       A[i + 1] = A[i]; 
       i = i - 1; 
      } 

      key = A[i + 1]; 

     } 

     print(A); 
    } 

    public static void main(String[] args){ 

     int[] x = {5,2,4,6,1,3}; 
     insertionSort(x); 
    } 
} 
+0

Вы должны указать свой ответ – Philibobby

Смежные вопросы