Bubble sort, insertion sort, and selection sort are naive sorting algorithms that have quadratic runtime complexity. Bubble sort scans the array repeatedly to swap adjacent elements into place. Insertion sort inserts elements into the proper place in a sorted subarray. Selection sort finds the largest element and swaps it into place each iteration. Quicksort, merge sort, heap sort, bucket sort, and radix sort have faster runtimes of O(n log n) or O(n). Quicksort uses a pivot element to partition the array. Merge sort divides the array into halves and recursively merges the sorted halves. Heap sort builds a max heap and removes elements one by one. Bucket sort uses buckets to sort elements based on their frequencies.