friht 发表于 2018-8-15 06:02:55

python版冒泡排序

  从第一个元素开始,对数组中两两相邻的元素比较,将值较小的元素放在前面,值较大的元素放在后面,一轮比较完毕,一个最大的数沉底成为数组中的最后一个元素,一些较小的数如同气泡一样上浮一个位置。n个数,经过n-1轮比较后完成排序。
  假定有下标为0~n的n+1个数的序列,要求按升序排列,实现的步骤如下:
  (1)从第0个元素开始与后一个比较,如果比后大两元素交换,依次比较到第n个元素,最终将最大的数换入第n个元素中,a(n)不动
  (2)重复(1) ,依次比较到第n-1个元素,最终将最大的数换入第n-1个元素中,a(n-1)不动
  (3)重复(1) ,依次比较到第n-2个元素,最终将最大的数换入第n-2个元素中,a(n-2)不动
  ………………………………………
  (n)a(0)与a(1)比较,如果a(0)大,与a(1)交换, a(0)最小
  代码实现:
  #coding:utf-8
  arr = []
  #冒泡排序函数
  def BubbleSort():
  for i in range(len(arr)-1):
  for j in range(len(arr)-i-1):
  if arr < arr: #相邻两数比较
  arr,arr = arr,arr #交换两个数
  #打印函数
  def PrintAns():
  for i in arr:
  print(i,end=" ") #以空格分开来输出
  #主函数
  sum = int(input("请输入需要测试的个数:"))
  str_in = input("以空格分开%d个数据:" %sum) #输入的是一串字符串,为以空格为间隔输入打下基础
  for i in str_in.split(): #以空格为间隔取str_in中的值
  arr.append(int(i))   #先把i对应转换成int类型,然后再添加到arr列表
  BubbleSort() #调用BubbleSort()函数
  PrintAns()   #调用PrintAns()函数

页: [1]
查看完整版本: python版冒泡排序