2012-07-29 3 views
0

Привет, пользователи Stack Overflow,Выбрать Сортировка сравнений массива

Я пытаюсь выяснить, как определить, сколько сравнений массивов происходит внутри метода. Функция arrayMaxPos выполняет сравнение n-1, чтобы найти максимальный элемент в массиве размера n.

Я просто хочу, чтобы моя голова вокруг этого.

public static void SelectSort(int [] a, int n) 
    { 
    for (int i = n; i> 1; i--) 
    { 
     int maxPos = arrayMaxPos(a, i); 
     swop(a, maxPos, i-1); 
    } 
    } 

Большое спасибо.

+0

кстати Проверяли ли вы - это этот метод реального работает для сортировки массива - Ур выполняется цикл от I = n до i> 1. – exexzian

ответ

0

Я думаю, что было бы ((N-1)^2)/2 сравнения.

0

Вы могли бы проанализировать свое собственное, отлаживая ваш код или просто помещая инструкции печати в разные стороны. и ваш ответ - выбор рода принимает п (п - 1)/2 для сортировки массива

+0

Ах, спасибо, что если мне будет предоставлен только код и у меня нет доступа для его отладки. Есть ли способ, которым я могу это исправить, просто используя мою голову? – user1028145

+0

@ user1028145: [Этот раздел] (http://en.wikipedia.org/wiki/Selection_sort#Analysis) на странице Википедии может помочь. – Blastfurnace

+0

@ user1028145 Что вы подразумеваете под отсутствием доступа к возможности его отладки? если вы не можете отладить, что с помощью любой IDE проанализируйте его вручную. – exexzian

0

Вашего внешний контур принимает п-1 итерации. Ваш внутренний цикл (arrayMaxPos (...)) принимает от n до 1, поэтому n/2.

Так как некоторые другие ответы уже пояснялось: N (N-1)/2

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