2023-11-09 bigbai
1、本文记录了几种经典的排序算法,并对排序算法的性能进行了总结,如果有哪里写的不妥的,还请大家指正批评。同时,也欢迎大家提供更简单有效的算法。稳定性,假设记录和记录都位于待排序的序列中,1,稳定:如果本来就在前面,且,排序之后仍然在前面;
2、2,不稳定:如果本来就在前面,且,排序之后可能出现在后面;待排序的记录是否全部被放置在内存中。1,内排序:在整个排序过程中,待排序的所有记录全部被放置在内存中;文中的所有排序算法都属于内排序,
3、2,外排序:由于排序的记录个数太多,不能同时放置在内存,整个排序过程需要在内外存之间多次交换数据才能进行;时间复杂度:排序算法的时间开销。
4、空间复杂度:排序算法所需的存储空间。下面,将根据程杰的《大话数据结构》,从易到难对7种排序算法进行整理归纳。基本思想:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。
5、上面代码中,每一次外循环,都是将第个位置的记录,与它后面的记录进行比较。如果大,则进行交换,这样一次大循环之后,第个位置的记录与后面位置的记录相比就是最小的。每执行一次外循环,会从排序数组末尾开始两两比较,把较小的记录交换到前面,知道找到最小值放在第个位置。
1、这样在寻找最小值的过程中,也会把较小值移到排序数组的前面,显然这一点要由于冒泡排序初级版。假设待排序的序列为,除了第一和第二个记录需要交换外,其他都已经是正确的顺序了。也就是说,后面的记录其实不需要进行交换,也不需要进行比较。这里设置变量作为标记,每次外循环的时候判断前一次循环中的内循环是否进行数据交换。
2、如果没有进行数据交换,则退出外循环,说明后面已经是有序的了,不需要再进行比较。经过这样的改进,冒泡排序在性能上就有了一定的提升,可以避免因已经有序的情况下的无意义循环判断。这只是冒泡排序算法的一种改进,网上还有很多其他的改进算法,可以参考十大经典排序算法的版。
3、待排序的记录是否全部被放置在内存中:内排序;1,最好的情况:()——已经是正序的;2,最坏的情况:(^2)——正好是逆序的;3,平均的情况:();
4、空间复杂度:(1);算法本身的复杂度:简单;基本思想:每一趟通过次关键字之间的比较,从个记录中选出关键字最小的记录,并和第个记录进行交换;
5、时间复杂度:无论最好最差,都是(^2);空间复杂度:(1);
原文链接:https://www.bigbai.cc/news/7525.html
本文版权:如无特别标注,本站文章均为原创。