2014-02-17 5 views
-1

У меня есть два массива 1 со строками и еще один с ints. я должен использовать вставки сорта, чтобы напечатать этот список в присоединяющихся числовом порядке мудрое это мой код до сих порВставка сортировка Числовое

эти массивы:

String[]bn={"Cardinals","BlueJays","Albatross","Vultures","Crows","Mockingbirds","Condors","BaldEagles","Pigeons","RedHeadWoodPecker","Hummingbirds","Dodos"}; 


int[]bq={40,15,1,3,10,2,12,25,7,6,88,15}; 

    public static void SortNumericalOrdernsert (String[] bn,int[] bq){ 
    for(int i=1;i<bq.length;i++){ 
     int next=bq[i]; 
     String y=bn[i]; 
     //find all the insertion location 
     //Move all the larger elements up 
     int j=i; 
     while(j>0 && bq[j-1]>next){ 
      bn[j]=bn[j-1]; 
      bq[j]=bq[j-1]; 
       j--; 
     } 
     //insert the element 
     bq[j]=next; 
     bn[j]=y; 
    } 

}} 

Где я делаю это неправильно?

+0

Что вы имеете в виду под "обязать"? Это домашнее задание? –

+1

Какая у вас проблема? Неверные результаты? Сбой? Ошибка компиляции? –

ответ

0

// Редактировано

Вы хотите сделать это следующим образом?

public static void SortNumericalOrdernsert(String[] bn, int[] bq) { 
    for (int i = 1; i < bq.length; i++) { 
     int next = bq[i]; 
     // find all the insertion location 
     // Move all the larger elements up 
     int j = i; 
     while (j > 0 && bq[j - 1] > next) { 
      bq[j] = bq[j - 1]; 
      j--; 
     } 
     bq[j] = next; 
    } 
    for (int i = 1; i < bn.length; i++) { 

     String y = bn[i]; 
     int j = i; 
     while (j > 0 && isBigger(bn[j - 1], y)) { 
      bn[j] = bn[j - 1]; 
      j--; 
     } 
     bn[j] = y; 
    } 
} 

private static boolean isBigger(String left, String right) { 
    return left.compareTo(right) > 0; 
} 
+0

Ну, ваш код сортирует их по алфавиту, его нужно сортировать численно. – user3321128

+0

Выход должен быть: 1,2,3,6,7,10,12,15,15,40,88 – user3321128

+0

Появилась ошибка. Извините, я не проверял код. Это то, что вы хотите? – Kunihiko

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