冒泡排序和选择排序的区别

冒泡排序和选择排序,在我看来,好象都是每一轮把最大或最小的元素筛选出来放在相应的位置上,真正的区别是什么,我看代码老是搞不清楚是哪种排序?

是这样的
区别主要在交换的方式上

每一轮都把最大或最小的元素筛选出来放在相应的位置上
这是相同的
但是
对于每一轮
比如第一轮
要把1~n 中最大的那个放到n这个位置
冒泡法每次比较和移动相邻的两项
而选择排序每次交换当前项和第n项
我把代码写出来你就懂了:
冒泡:
for i:=1 to n-1 do
if (a[i]>a[i+1]) then swap(i,i+1);
选择:
for i:=1 to n-1 do
if (a[i]>a[n]) then swap(i,n);
(swap 表示交换)

总的来说,两种排序比较的次数是相同的
但交换的次数,选择排序是更少的
虽然两者的时间复杂度都是 O(n^2)
但通常,选择排序更快一点

参考资料:http://hi.baidu.com/yukunlinykl/blog/item/56f3986e768fe5db81cb4a17.html

温馨提示:内容为网友见解,仅供参考
无其他回答

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

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

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

冒泡排序和选择排序的区别
1. **比较对象**:冒泡排序是相邻元素两两比较;选择排序是在每轮中,将当前轮次的最小元素与当前轮次的起始位置元素交换。2. **交换次数**:冒泡排序在每轮中可能进行多次交换,直至排序完成;选择排序每轮只进行一次交换。3. **定位方式**:冒泡排序通过数定位位置;选择排序给定位置找数。4. *...

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

冒泡法和选择排序法有什么不同?最好举下例子
冒泡排序和选择排序都是稳定的排序方法。不同的地方是处理的过程不一样。冒泡是相邻的两两比较,把小的交换上去,每一趟比较都会得到一个最小值。一个一个的就像是冒泡一样,比较形象。如果在一趟比较中,没有发现要交换的数值,则排序完成。选择排序是从待排序队列中选出最小的值,放到已排序队列的...

选择排序和冒泡排序的区别
选择排序和冒泡排序的区别如下:冒泡排序冒泡排序的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后,然后比较第2。个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此...

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

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

选择排序算法与冒泡排序算法有何异同啊?
选择排序,是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...

相似回答