发布网友 发布时间:2022-04-23 21:11
共1个回答
热心网友 时间:2022-05-22 02:48
快速排序,就是拿出一个元素,把比它小的都放在左边,比它大的都放在右边,然后把左右两边的序列继续这样排序。通常拿出的这个元素都是序列中的第一个,因为这样比较简单,不用思考。举例: 4,2,7,5 第一次整理为:2,(4),7,5 冒泡排序就是相邻元素的两个两个比较,第一个第二个比较,大的放在第二个,第二个第三个比较,大的放在第三个……从左到右来一次,就会有一个最大的被找到而放在了最右边,这个过程就像水了的泡泡越上浮越大一样。举例: 4,2,7,5 第一次比较:2,4,7,5 第二次比较:2,4,7,5 第三次比较:2,4,5,7 直接插入排序,就是向有序序列中放入一个元素,先放在最后看看,发现不符合顺序要求,那就放在倒数第二个,看看,还不符合要求……一直找到一个位置,使这些元素有序,那么就实现了排序。举例: 4,2,7,5 第一次,只有一个4,认为是有序的。所以结果是:4,2,7,5 第二次,把2一起考虑进来,发现比前面的4小,所以无序,那么交换他俩,所以是:2,4,7,5 然后继续看,发现2已经到最前面了,那么就结束吧。 第三次,把7一起考虑进来,发现比前面的4大,所以顺序是对的。结果是:2,4,7,5 第四次,把5考虑进来,发现比7小,交换,比前面的4大,ok,位置可以固定了,结果是:2,4,5,7 最后的堆排序麻烦一些,要考虑堆的意义。举小堆来说,好比一摞金子塔(三角形),顶上的总是脚上的两个小,所以最上面尖尖上的元素是最最小的,而最大的一定在最底下一层里,位置不固定的。堆排序就是说,每次取最小的那个(小堆的例子)也就是最上面那个,取出来之后,把其他的元素再整理成小堆,再取最顶上那个是次小的元素,这样一直把所有元素都取出来,取的顺序就是排序的结果了。举例: 。。。3。。。 。。4。。5。 。5。6。9 采取的方案是把最小的和最后一个交换位置,理解为取出了最顶上那个。 。。。9.。。。 。。4.。。5.。 。5。6.。3 注意,3是第一个取出来的,就可以认为它不存在啦,接着整理这个堆,9-4-5这个三角形整理一下,变成: 。。。4.。。。 。。9.。。5.。 。5.。6.。。。 看到左下角的三角形不符合规则,继续整理 。。。4.。。。 。。5.。。5.。 。9.。6.。。。 ok了,所有元素又呈现堆的样子了,每个三角形中,下面的都比上面的大。可以取下一个次小的元素啦。 上面解释的比较模糊,如果有问题,就继续联络吧。