题目:给定10个数,按从小到大进行排序。


选择排序原理:先把这10个数放在数组arr中,不妨令第一个数(即arr[0])为a,然后让a和arr[1]进行比较,确定二者之间的最小数;然后如果a>arr[1],令a=arr[1],再让a和其他数比较,确定最小数,然后arr[1]重复上述过程...注意到a排在第一个数,从而把最小数排在第一位,然后进行从小到大排序。(上面a和arr[1]比较的时候,为什么我没有说明a<arr[1]的情况呢,这里就很明显了,a所在位置就是我们要找的最小数嘛)

代码如下:

选择排序(含与冒泡排序区别)_选择排序和冒泡排序区别


冒泡排序:先把十个数放在数组acr中,不妨令第一个数(即acr[0])为b,然后让b和acr[1]进行比较,确定二者之间的较大数,如果b>acr[1],则acr[1]=b,然后acr[1]和acr[2]进行比较,依次下去从而确定最大数...然后完成从小到大排序。

代码如下:

选择排序(含与冒泡排序区别)_冒泡排序_02



两者之间的区别:目前我能想到的就是定义上的区别,冒泡排序是两两进行比较(得出最大数或者最小数),选择排序是确定某个位置来比较(第一个位置或者最后一个位置)。


我刚刚想到了一个就是单看我上面的两个代码,选择排序先确定最小数,冒泡排序先确定最大数,你认为对吗?

这是不对的,因为确定最大值和最小值是可以通过改变循环内条件进行确定的,比如

选择排序先确定最大值:

选择排序(含与冒泡排序区别)_C语言入门_03

冒泡排序先确定最小值:


选择排序(含与冒泡排序区别)_选择排序和冒泡排序区别_04


如有不对,欢迎指正。