冒泡排序和选择排序的不同之处有哪些?

我们学了算法分析这门课,我在编程的时候发现,其实冒泡排序和选择排序本质是一样的,而我自己又写过一种排序方式,当时认为是冒泡,现在看来是冒泡和排序的综合体,具体的代码看图片吧。。。
这是典型的选择排序:

这是典型的冒泡排序:

这是我自己写的排序:

根据冒泡排序的特点,每次比较后都需要交换,我这个排序确实是每次比较后符合条件的就交换了,所以像是冒泡排序,但是冒泡排序每次比较都是按照相邻的两个数进行的比较,我的这个不是相邻的两个数比较,所以又不像冒泡。。。根据选择排序的特点,每次选择一个最小的(或者最大)的数,放在序列的最前面,我的这个就每次选择符合条件的放在最前面,但是选择排序是记录数据的位置,最后进行交换而我写的这个是每次都进行交换,这又不像是选择排序。。。。求高手看下,我写的这个是什么排序方法,然后说下冒泡排序和选择排序的根本区别,谢谢了

你这个其实还是冒泡,不是选择,选择选好了,需要交换,才交换,这是选择排序;
冒泡每次比较完成,需要交换就交换。是为冒泡,每一次比较轻的气泡就往上冒;
标准的是从前向后比较,前n-i-1个元素,你的是从前向后,比较后n-i-1个元素。

冒泡排序和选择排序的根本区别就是

1)选择选好了(最大或最小元),需要交换(最大或最小元和当前元素不在同一位置),才交换,是选择排序;
2)比较完成,需要交换就交换(元素逆序,则交换)。是冒泡选择排序;

举例
选择排序:升序
i 自小到大
i前面的是已经排好序的数据。
选一个当前位置i 以后的最小元素,如果位置在 i不需要交换,否则交换,让从i 到 n
最小元素放在第i的位置。
冒泡排序: 升序
i 自小到大
i前面的是已经排好序的数据。
1) i 后面的每一个元素和i位置的元素比较,小的交换到i的位置。
2) i后面的相邻两个元素比较,小的交换到前面来。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-04-09
你写的这个排序算法目前应该没有归类,如果没错的话。
冒泡,选择,希尔...等排序算法是前辈们总结出来的经典排序算法,它们各有自己的优缺点,适合不同情况下使用。比如冒泡排序实现起来简单,如果待排序数据量小,并且对效率要求不高时,完全可以满足;希尔排序效率比冒泡高,但是算法实现稍复杂,一般人们不愿意去实现它。
我认为排序算法的根本区别是它们排序的效率,就是排序消耗的时间和空间。你如果要比较冒泡排序和选择排序的区别,就去分析它们排序时分别占用的时间和空间。老实说,这些内容算法书都有讲解,但是我从来没有认真去研究分析过,也没有真的去计算过一个算法的效率值!如果那位对这方面熟悉,不妨帮 @飞行苏 计算下。 不过根据对算法的理解,冒泡排序的效率不会大于选择排序。本回答被提问者采纳

冒泡排序和选择排序的不同之处有哪些?
冒泡排序和选择排序的根本区别就是 1)选择选好了(最大或最小元),需要交换(最大或最小元和当前元素不在同一位置),才交换,是选择排序;2)比较完成,需要交换就交换(元素逆序,则交换)。是冒泡选择排序;举例 选择排序:升序 i 自小到大 i前面的是已经排好序的数据。选一个当前位置i 以后...

冒泡排序和选择排序区别
两种排序在稳定性、交换次数、比较方式和效率等方面存在区别。1、稳定性:冒泡排序是一种稳定的排序算法,而选择排序则不是。在冒泡排序中,相等的元素在排序后不会改变其相对位置,而在选择排序中,相等的元素可能会因为交换而改变其相对位置。2、交换次数:冒泡排序在每一轮比较中,只要相邻元素顺序不对...

选择排序和冒泡排序有什么区别
1、稳定性不同:冒泡排序是稳定的排序,而选择排序是不稳定的排序。2、交换成本不同:冒泡排序需要相邻元素比较,如果当前元素大于后一个元素进行交换,而选择排序只需换一次位置。3、顺序不同:冒泡排序是比较相邻位置的两个数,而选择排序是按顺序比较,找最大值或者最小值。4、优缺点不同:冒泡排序...

冒泡排序和选择排序的区别是什么?
选择排序与冒泡排序区别:1、冒泡排序是左右两个数相比较,而选择排序是用后面的数和每一轮的第一个数相比较;2、冒泡排序每轮交换的次数比较多,而选择排序每轮只交换一次;3、冒泡排序是通过数去找位置,选择排序是给定位置去找数;4、当一个数组遇到相同的数时,冒泡排序相对而言是稳定的,而选择...

C语言中冒泡排序法和选择排序法有哪些不同
不同点:冒泡排序法:一趟一趟的将两个相邻的数进行交换如果有10个数则需要排9躺,如果是从大到小输出则需要每次将后一个数和前一个数进行比较将较大的数赋值给钱一个数,将较小的数赋值给后一个数,其实就是两个数交换,那么第一趟交换完毕后,最小的数便出现在了数组的最后面,然后进行第二...

C语言中冒泡排序法和选择排序法有哪些不同
1、冒泡排序法:一趟一趟的将两个相邻的数进行交换如果有10个数则需要排9躺,如果是从 大到小输出则需要每次将后一个数和前一个数进行比较将较大的数赋值给钱一个数,将较小的数赋值给后一个数,其实就是两个数交换,那么第一趟交换完毕后,最 小的数便出现在了数组的最后面,然后进行第二趟...

选择排序算法与冒泡排序算法有何异同啊?
选择排序,是a[0]和a[1],a[2],a[3]依次比较,遇到小的就交换,这样一次下来,最大的被保存在了a[0].下次排序就从a[1]开始重复以上步骤。冒泡排序,是a[0]和a[1]比较,小的就交换。然后a[1]和a[2]比较,小的交换。然后a[2]和a[3]比较小的就交换。这样一次下来,最大的被保存在a...

冒泡与选择有哪些异同呢?
冒泡排序和选择排序的时间复杂度,空间复杂度都是相同的,他们的外层循环次数,乃至总的比较次数也是相同的。不同的地方在于,大多数情况下选择排序的交换操作次数会比冒泡更少,会高那么一点运行效率,再一个冒泡排序是稳定的(前提是相等的数据不进行互换),选择排序是不稳定的。冒泡算法的逻辑在于,让...

简述各种排序算法的优缺点
1、冒泡排序法:优点是数据稳定误差小。缺点是速度慢。2、选择排序法:优点是移动数据的次数少。缺点是比较数据的次数多。3、插入排序法:优点是数据稳定且速度快。缺点是比较次数浮动较大。4、缩小增量排序法:优点是速度快且数据可以按一定顺序排列。缺点是数据不稳定。

冒泡排序和选择排序的区别
冒泡排序的核心在于相邻元素的依次比较和交换位置。具体实现流程是取一组无序数据进行纵向排列,进行逐对数据的比较。若上位数据大于下位数据,则交换两数据的位置,如此重复直至完成排序。整个过程就像大气泡下沉,小气泡上浮,因此得名冒泡排序。冒泡排序的时间复杂度为O(n²)。选择排序方法的排序过程...

相似回答