python冒泡排序

2019-08-03 20:12栏目:编程学习

小编给大家推荐的这篇文章介绍了php获取数组最后一个元素的教程,非常实用,有兴趣的同学快来看看吧!

python冒泡排序
一种简单的排序算法。
比较相邻的两个元素,如果第一个比第二个大,那么就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
代码如下:

$array=array(1,2,3,4,5);  


echo $array[count($array)-1];//计算数组长度,然后获取数组最后一个元素,如果数组中最后一个元素含有非数字键名,结果可能跟预期不符合  
//适用于键名为数字的数组  


echo '<br>';  
echo end($array);//将数组的内部指针指向最后一个单元,适用于所有数组  


rsort($array);//对数组逆向排序,如果数组中含有字母或汉字,结果可能不符合预期,最适用于数字数组
echo $array[0];
seq = [5,4,3,2,1]
print '排序前:',seq
for i in range(len(seq)-1): #这个循环 是循环次数,不是数组下标。
    for j in range(len(seq)-1-i): #这个循环才是真正的数组下标。
        if seq[j] > seq[j 1]:
            seq[j], seq[j   1] = seq[j   1], seq[j]

print '排序后:',seq

删除最后一个元素

运行结果如下:

<?php
$stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_pop($stack);
print_r($stack);//www.111cn.net
?>
经过此操作后,$stack 将只有 3 个单元:
Array
(
    [0] => orange
    [1] => banana
    [2] => apple
)

图片 1

image.png

1. 第一个循环是循环 次数,多少个元素就循环len(seq)-1次,不是数组的下标。

2. 第二个循环才是真正的数组 下标 。循环len(seq)-i-1次。

下面解释一下 为什么第一个for 循环len(seq)-1次。
seq有五个元素,每次循环的时候,都拿一个元素对比其他元素。当对比到第四次的时候,其实整个数组已经是排序好的了

seq = [5,4,3,2,1]
print '排序前:',seq
for i in range(len(seq)): #这个循环 是循环次数,不是数组下标。
    for j in range(len(seq)-i-1): #这个循环才是真正的数组下标。
        if seq[j] > seq[j 1]:
            seq[j], seq[j   1] = seq[j   1], seq[j]
    print '排序进行时:第 %s 次循环后,排序好的数组 ' % (i   1), seq
print '排序后:',seq

不减1的情况下

图片 2

image.png

减1的情况下:

图片 3

image.png

第二个for 循环len(seq)-1-i次
为什么要减去 i 呢?
我们看一下上面的运行结果图,
第一次循环时,最后一个元素是随机的元素,此时 i == 0,
第二次循环时,因为最后一个元素是最大的元素了,完全没必要在对比一次了,所以就把最后一个元素pass了,此时 i == 1,所以 len(seq)- 1 - i,剔除最后一个元素。
第三次循环,最后两个元素是整个数组最大的元素,所以最后两个元素完全没必要进行对比,所以pass掉最后两个元素,此时 i == 2,所以 len(seq)-1-i,剔除最后两个元素。
以此类推,直到循环结束。

版权声明:本文由威尼斯人app发布于编程学习,转载请注明出处:python冒泡排序