冒泡排序
这种排序方式是最容易理解的,主体思想就是:
指针重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。
接下来我们来看下冒泡算法的过程
上图是第一趟比较过程
冒泡排序一次只比较两个数字,并且这两个数字是相邻的。
从图上我们可以看到,原数组为【9,1,7,5,3,8,4】。
第一次比较首先比较第0位和第一位,并且将结果大的数字往后移动,也就是交换。第0位是9, 第1 位是1,9>1,所以我们将大的数字往后移动。
同理,如果第0位<第1 位,我们就不进行交换。
之后我们在比较第1位和第2位的数字。将结果大的往后移动。
就这样,通过n-1次比较后(n为数组长度),我们就将最大的数字移到了数组的最末端。然后再继续进行第二轮比较,找出第二大的数字,往后以此类推。
上图为七次比较过程
下面为python3的代码:
list1 = [9,1,7,5,3,8,4]
#下列方法是冒泡排序算法进行排序的
#len()是得到列表的长度函数
for i in range(len(list1)):
for j in range(len(list1)-i-1):
if list1[j]>list1[j+1]:
temp=list1[j+1]
list1[j+1]=list1[j]
list1[j]=temp