zoukankan      html  css  js  c++  java
  • 冒泡排序,选择排序,插入排序

    冒泡排序:

      定义:

        依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。

        至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。

        由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。

      实现:

     1 """冒泡排序"""
     2 Def  Fun(list):
     3     #序列长度
     4     N=len(list)
     5     #构造外层循环,每次循环可协助内层循环找到一个最大值
     6     For x in range(n-1):
     7         #内层循环,循环一遍找到一个最大值
     8         For y in range(n-1-x):
     9             #比较相邻的两个值得大小,如果左边值大,就交换变量值
    10             If list[y]>list[y+1]:
    11                 #交换变量值
    12                 List[y],list[y+1]=list[y+1],list[y]
    13 If __name__=="__main__":
    14     List=[1,3,5,7,9,0,8,6,4,2]
    15     Fun(list)
    16 Print(list)

    选择排序:

      定义:

        初始时在序列中找到最小(大)元素,放到序列的起始位置作为已排序序列;然后,再从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

      实现:

     1 """选择排序"""
     2 Def  Fun(list):
     3     #列表长度
     4     N=len(list)
     5     :#当n=13时,为0到12,因为每循环一次都有一个值被找到,所以在减一
     6     For x in range(n-1):
     7         #
     8         #设置默认值1
     9         Mit=x
    10         For y in range(x+1,n):
    11             If list[mit]>list[y]:
    12             Mit=y
    13         If mit!=x:
    14             List[mit],list[x]=list[x],list[mit]
    15 If __name__=="__main__":
    16     List=[1,3,5,7,9,0,8,6,4,2]
    17     Fun(list)
    18     Print(list)

    冒泡与选择的区别:

      冒泡排序通过依次交换相邻两个顺序不合法的元素位置,从而将当前最小(大)元素放到合适的位置;而选择排序每遍历一次都记住了当前最小(大)元素的位置,最后仅需一次交换操作即可将其放到合适的位置

    插入排序:

      定义:

        通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

      算法步骤:

        将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。

        从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)

      实现:

    1 def insertionSort(arr):
    2     for i in range(len(arr)):
    3         preIndex = i-1
    4         current = arr[i]
    5         while preIndex >= 0 and arr[preIndex] > current:
    6             arr[preIndex+1] = arr[preIndex]
    7             preIndex-=1
    8         arr[preIndex+1] = current
    9     return arr
  • 相关阅读:
    Maven(一)之Maven入门
    由浅入深讲解数据库中Synonym的使用方法
    sql server 中查询数据库下有多少张表以及同义词等信息
    SQLServer中同义词Synonym的用法
    SQL Server在用户自定义函数(UDF)中使用临时表
    java 异常
    java算法之冒泡排序法
    如何用Java实现反转排序
    关于eclipse的注释和反注释的快捷键
    java获取随机数
  • 原文地址:https://www.cnblogs.com/errenjune/p/12566737.html
Copyright © 2011-2022 走看看