十大经典排序排序算法学习总结(C++实现)
常用算法总结记录一下,否则会变得只记得算法名,也可能名都记不住。 图片和动图(我不会画),但我从网上找到了资源。 代码我用C/C++实现的,运行结果都有验证。 时间复杂度和空间复杂度我还没有研究,各种地方抄到的,以后有时间再研究,如果有错误,还请指正。 In/out-place: 不占/占额外内存 1.冒泡排序 冒泡排序算法原理: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 循环重复以上步骤,直到没有任何一对元素需要比较。 还有位前辈也画的挺好,我也把图贴过来了。 冒泡排序时间复杂度、空间复杂度、稳定性 冒泡排序时间复杂度:最好 O( n) 最坏 O( n 2 ) ,平均 O( n 2 ) 。 冒泡排序空间复杂度: O( 1 ) 。 冒泡排序是一种 稳定 排序算法。 冒泡排序源码实现 1 #include <iostream> 2 using namespace std; 3 4 5 template <typename T> 6 void BubbleSort(T arr[], int len) 7 { 8 if (NULL == arr || 0 >= len) 9 return; 10 11 int i = 0, j = 0, nFlag = 0; 12 13 for (i = 0; i < len - 1; i++) 14 {