Начал проходить курс CS50, после просмотра лекции написал алгоритм сортировки пузырьком, мой вариант:
int array[]={2,4,5,9,1,0,7,6,3,8};
int counter;
do
{
counter=0;
for(int i=0; i < sizeof(array)/sizeof(array[0])-1; i++)
{
if(array[i]>array[i+1])
{
int temp=array[i];
array[i]=array[i+1];
array[i+1]=temp;
counter++;
}
}
}
while (counter>0);
Потом, конечно же, пошел гуглить "как правильно", и викибукс выдаёт вот такой вариант:
for(i = 0 ; i < n - 1; i++) {
// сравниваем два соседних элемента.
for(j = 0 ; j < n - i - 1 ; j++) {
if(a[j] > a[j+1]) {
// если они идут в неправильном порядке, то
// меняем их местами.
int tmp = a[j];
a[j] = a[j+1] ;
a[j+1] = tmp;
}
}
}
Есть ли принципиальная разница между этими двумя вариантами? Если да - то в чем мой вариант плох?