我仍然刚刚开始使用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