私はまだ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ループを停止した場合、これは起こりませんが、最初の要素はソートされません(明らかに)。
バブルソートを正しく実装するにはどうすればよいですか?それはそんなに簡単な仕事のようです。何か不足していますか?
ありがとうございます!
'私はnoOfEmployees'は本当に私はnoOfEmployees-1 'を<'でなければなりません<。そして最初の要素がこのようにソートされます。 –
しかし、最初の要素は、少なくとも私のコードでは、この方法でソートされていません。 –
'std :: sort'もあります。これは、使用しているバブルのソートよりも効率的です。 – Rakete1111