私は少し練習していて、バブルソートアルゴリズムで配列をソートしようとしました。コンパイラは私に警告もエラーも与えませんでした、そしてそれはうまくいきました!最初に10倍の数値を入力し、次にプログラムがそれらをソートして印刷します。
コード:
#include <iostream>
using namespace std;
void arr_sort(int* array, const int arr_size){
int temp = 0; //Temporary integer to store (if necessary) the current element
int end = 0; //Run time condition
while(end++ != arr_size){ // Will loop max. 10 times
for(int i = 0; i < arr_size; i++){
if(array[i] > array[i + 1]){ //If the current element
temp = array[i]; //is bigger than the next
array[i] = array[i + 1];//Change the positions
array[i + 1] = temp;
}
}
}
}
int main(){
int arr_input[10];
for(int i = 0; i < 10;i++) //The user has to type 10 numbers
cin >> arr_input[i]; //which will be stored in this array
arr_sort(arr_input, 10); //sorts the array
cout << endl << endl;
for(int i = 0; i < 10; i++) //Print out the array!
cout << arr_input[i] << ", ";
cout << endl;
return 0;
}
私の唯一の問題は、arr_sort関数のwhileループです。つまり、 endがarr_sizeと同じ値になるまで配列をソートします。しかし、多くの場合、それほど長くは必要ありません。今の私の質問...どうすればこの機能を改善できますか?配列が完全にソートされているかどうかをテストして、whileループを何度も実行せずに停止できるようにするにはどうすればよいですか...?