algorytm wstawiania sortowanie vs sortowanie bąbelkowe vs quicksort
Pracuję nad badaniem w klasie, którą testowałem sortowanie i sortowanie bąbelków oraz szybkie sortowanie, przeprowadziłem test liczb losowych. Wyniki pokazują, że sortowanie jest szybsze niż sortowanie bąbelkowe, a sortowanie szybkie jest najwolniejsze.
Więc mam niższy ranking pod względem czasu
sortowanie wstawiania (najszybszy)sortowanie bąbelków (drugi wynik)szybkie sortowanie (najwolniejsze)Biorąc pod uwagę, że wstawianie i sortowanie bąbelków mają złożoność O (n2), podczas gdy szybkie sortowanie O (n log n) i O (n log n) powinno być szybsze !!!
Czy ktoś mógłby mi się podzielić wyjaśnieniami?
Dzięki
(NSMutableArray *)quickSort:(NSMutableArray *)a
{
// Log the contents of the incoming array
NSLog(@"%@", a);
// Create two temporary storage lists
NSMutableArray *listOne = [[[NSMutableArray alloc]
initWithCapacity:[a count]] autorelease];
NSMutableArray *listTwo = [[[NSMutableArray alloc]
initWithCapacity:[a count]] autorelease];
int pivot = 4;
// Divide the incoming array at the pivot
for (int i = 0; i < [a count]; i++)
{
if ([[a objectAtIndex:i] intValue] < pivot)
{
[listOne addObject:[a objectAtIndex:i]];
}
else if ([[a objectAtIndex:i] intValue] > pivot)
{
[listTwo addObject:[a objectAtIndex:i]];
}
}
// Sort each of the lesser and greater lists using a bubble sort
listOne = [self bubbleSort:listOne];
listTwo = [self bubbleSort:listTwo];
// Merge pivot onto lesser list
listOne addObject:[[NSNumber alloc] initWithInt:pivot]];
// Merge greater list onto lesser list
for (int i = 0; i < [listTwo count]; i++)
{
[listOne addObject:[listTwo objectAtIndex:i]];
}
// Log the contents of the outgoing array
NSLog(@"%@", listOne);
// Return array
return listOne;
}