2016-01-09 104 views
0

我正在做的一個功能是對2行12列的二維數組使用插入排序。第一行是學生證,所以共有12名學生。第二行有每個學生的相應GPA。我不知道如何提出插入排序來按升序對GPA編號進行排序。任何幫助都是極好的!在C++中對二維數組使用插入排序函數?

我有這個到目前爲止。

void insertionSort(double avg[][COLS]) 
{ 
int current = 1; 
int last = COLS - 1; 
int temp; 
int walker; 
int row = 1; 

while (current <= last) 
{ 
    temp = avg[row][current]; 
    walker = current - 1; 
    while (walker >= 0 
     && temp < avg[row][walker]) 
    { 
     avg[row][walker+1] = avg[row][walker]; 
     walker = walker - 1; 
    } 

    avg[row][walker+1] = temp; 
    current = current + 1; 
} 
+0

你做什麼是排序的問題?它似乎是一個正確的插入排序? – m7mdbadawy

+1

你是否反對使用['std :: sort()'](http://en.cppreference.com/w/cpp/algorithm/sort)? – YSC

+1

我的問題真的是爲什麼這是一個二維數組。學生ID是字母數字,GPA是浮點數。誰想出了這樣一個想法來創建兩種不同類型的二維數組? – PaulMcKenzie

回答

1

您的問題是temp變量聲明爲int它應該是雙倍還你應該換的ID太

void insertionSort(double avg[][COLS]) 
{ 
    int current = 1; 
    int last = COLS - 1; 
    double temp;//this was an int 
    int walker; 
    int row = 1; 

    while (current <= last) 
    { 
     temp = avg[row][current]; 
     walker = current - 1; 
     while (walker >= 0 
       && temp < avg[row][walker]) 
     { 
      avg[row][walker+1] = avg[row][walker]; 
      avg[row-1][walker+1] = avg[row-1][walker];//swap the id of two students 
      walker = walker - 1; 
     } 

     avg[row][walker+1] = temp; 
     avg[row-1][walker+1] = temp; 
     current = current + 1; 
    } 
}