我仍然剛剛開始使用C++和內存管理,所以請裸露在我身邊!C++冒泡排序動態分配數組
我寫了一個氣泡排序算法,它使用字符串比較對動態分配的數組進行排序。
這裏是我的代碼:
void AddressBook::bubble_sort_address_book(){
bool swapped = true;
while(swapped){
swapped = false;
for(int i = 0; i < noOfEmployees; i++){
if(employees[i].combined_name() > employees[i+1].combined_name()){
Employee temp_employee = employees[i+1];
employees[i+1] = employees[i];
employees[i] = temp_employee;
}
}
}
}
我的問題是很明顯的,但我似乎無法弄清楚如何解決它:代碼有時會失敗,上線(以不確定的方式):
Employee temp_employee = employees[i+1]
它相當明顯,因爲如果i
等於數組的末尾,訪問存儲器與i+1
導致未定義的行爲。但是,如果我停止與noOfEmployees-1
for循環,這不會發生,但第一個元素從未排序(顯然)。
如何正確實施氣泡排序?這似乎是一個微不足道的任務。我錯過了什麼嗎?
謝謝!
'I
,但第一個元素總是保持未排序,至少在我的代碼 –
還有'std :: sort',它也比你使用的冒泡排序更有效率。 – Rakete1111