摘要:
实现快速排序算法的关键在于先在数组中选择一个数字,接下来把数组中的数字分为两部分,比选择的数字小的数字移到数组的左边,比选择的数字大的数字移到数组的右边。这个函数可以如下实现:int Partition(int data[], int length, int start, int end){ if(data == NULL || length = length) throw new std::exception("Invalid Parameters"); int index = RandomInRange(start, end); swap(&data... 阅读全文
摘要:
转自:http://blog.csdn.net/caryaliu/article/details/8280647从以下几个方面来比较排序算法:1. 算法的时间和空间复杂度2. 排序的稳定性3. 算法结构的复杂度4. 参加排序的数据规模排序的稳定性:稳定排序方法: 插入排序、冒泡排序、二路归并排序、基数排序是稳定排序算法;不稳定排序方法: 选择排序、谢尔排序、快速排序、堆积排序是不稳定排序算法。算法复杂度比较:各种内排序算法的时间、空间复杂度排序方法平均时间最坏情况辅助空间插入排序O(n*n)O(n*n)O(1)谢尔排序O(n*log2n)O(n*log2n)O(1)泡排序O(n*n)O(n*n 阅读全文