2015-09-10 2 views
0

Я хочу сортировать числа, используя указатели вместо индексов. Кстати, это заголовок файла:C++: selectionSort с указателями вместо индекса

int * sort(const int * const array, int size) 

И ниже исходный код, который я получил

void selectionSort(int list[], int arraySize) 
{ 
    for(int i=arraySize-1; i>=1; i--) 
    { 
     int currentMax=list[0]; 
     int currentMaxIndex=0; 

     for(int j=1; j<=i; j++) 
     { 
      if(currentMax=list[j]) 
      { 
      currentMax=list[i]; 
      currentMaxIndex=j; 
      } 
     } 
     if(currentMaxIndex != i) 
     { 
      list[currentMaxIndex]=list[i]; 
      list[i]=currentMax; 
     } 
    } 
} 

Я знаю, что вы можете список переключения [я] в * (список + я), но я не знаю, как это сделать с помощью «currentMaxIndex». Я бы очень признателен за вашу помощь!

+1

если вы имеете в виду, как это сделать: list [currentMaxIndex] = list [i]; , Вы можете сделать это с помощью этого синтаксиса: * (list + curMaxIdx) = * (list + i). Они оба делают то же самое. Я не понимаю, почему вы хотите изменить синтаксис! – Brahim

+1

Вы знаете, что вы можете использовать синтаксис 'p [i]' с указателями, а не только с массивами, правильно? – interjay

+0

@interjay Извините, но вы можете объяснить? –

ответ

1

Указатели в C являются целыми числами, как и любые другие, и их можно сравнить с обычными операциями.

Так что вы можете делать такие вещи, как:

int *end = list + length; // Create a pointer to one-past the end of an array 
for(int *it = list; it < end; it++){ /* use it to read the elements */ } 
int *my_favorite_index = list + some_index; 

Я не собираюсь, чтобы решить вашу домашнюю работу для вас, но я надеюсь, что это помогает.

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