先搬书说说书上标准的说法吧,选择排序基本思想是每一趟在n个记录中选取关键字最小的记录作为有序序列的第I个记录,并且令I为1~n-1,进行n-1趟选择操作。用我的话来说(把数从小到大排列)就是把数组中的第一个数和第二个数比较,若第一个数大于第二个数,则把两个数的位置交换,然后现在这个位置的第二个数和第三个数比较;若第一个数小于第二个数的话,两个数的位置不变,接着将第一个数和第三个数进行比较大小。全部以此类推直到第一个数和后面所有的数进行比较,然后再把数组中原来的第二个数做这个比较,一直到数组的所有数全部遍历一次。
冒泡排序,首先泾第一个记录的关键字和第二个记录的关键字进行比较,若为逆序则将两个记录交换,然后比较第二个和第三个记录的关键字,以此类推,知道第n-1个记录和第n个记录的关键字进行过比较为止。用我的话来说就是把最先前的那个数和第二个数比较,若前面比后面小,则第二个数和第三个数进行比较,一直到遍历一次数组中所有的元素;若前面的比后面的大,则两个交换位置,然后用现在第二个数和第三个数进行比较,一直到遍历一次数组中所有的元素。
估计有点昏了。那就简单点。选择就是原来的第一个元素和后面的所有元素进行一次比较后再用原来的第二个元素和除原来第一个元素以外的所有元素进行一次比较。冒泡就是相邻的两个元素进行比较,一直到遍历一次数组所有元素才结束、。 也可以这样想,选择排序就是每一次遍历数组的时候都将数组元素最大或者最小的元素按数组下标的顺序放入数组,然后比较这个元素后面的元素,然后再放入元素。冒泡排序可以看作是相邻的两个元素进行比较,小的放在前面,大的放在后面(谁放在前面看你的需求)。
追问谢谢你的热心帮助.我还是不太懂,希望你能耐心看下我的理解对不对哈(都按从小到大排):选择,第1趟比较选出最小的数放第1位,然后在剩下的数中选出最小的放第2位,再在剩下的数中选出最小的数放第3位... ;冒泡,第1趟,相邻两个数比较,先从第1个和第2个数开比,若第2个数大的话就不换位置了,然后是第2个数和第3个数比较,直到把最大的数放到最后面去,然后第2趟重复第1趟选出次大的数放倒数第2位,直到排好为止.是不是这样的?谢谢!
追答选择是对的。冒泡还是放在最前面,其实和选择最明显的区别就是冒泡是相邻的比较,而不像选择可以和不相邻的比较。