простые изменения для повыпения эффективности пузырьковой сортировки.
Данные в массиве могут уже находиться в надлежащем порядке или порядке, близком к нему, так зачем делать девять проходов, если будет достаточно менышего количества? Измените сортировку так, чтобы в конце каждого прохода проверялось. делались ли перестановки. Если перестановок не было, то данные уже находятея в нужном порядке, так что программа должна завершиться. Если перестановки были, то необходим по крайней мере еще один проход.
Моё решение:
void bubbleSortArray(int array[],int size){
int tmp=0;
int countForBreak=0;
for (int pass = 1; pass < size; pass++) {
if(countForBreak==size-1)
break;
else{
for (int i = 0; i < size-1; i++) {
if(array[i]>array[i+1]){
tmp=array[i];
array[i]=array[i+1];
array[i+1]=tmp;
}
else
countForBreak++;
}
}
}
}
К чему сравнение с size-1? Нужен булевый флаг. Если на текущем проходе внешнего цикла не было перестановок, массив сортирован
это Си
Обсуждают сегодня