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

    '''
    冒泡排序
    它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
    这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端
    '''
    
    data_set = [12,45,2,48,66,2,1,56,36,90,5,10,503]
    
    for i in range(len(data_set)):   ##控制相邻比较的轮数 
        for j in range(len(data_set)-i-1):  #控制每轮相邻比较的次数
            #如果前面的元素的值大于后面一个元素 互换值
            if data_set[j]>data_set[j+1]:
                temp = data_set[j]
                data_set[j]=data_set[j+1]
                data_set[j+1]=temp
        #print(data_set)
    print(data_set)
    '''
    选择排序
    从所有序列中先找到最小的,然后放到第一个位置。之后再看剩余元素中最小的,放到第二个位置……以此类推,就可以完成整个的排序工作
    '''
    
    data_set = [12,45,2,48,66,2,1,56,36,90,5,10,503]
    
    for i in range(len(data_set)):  #大圈决定轮数 也就是我们选择的次数
        minIndex = i
        for j in range(i+1,len(data_set)):  #小圈就是我们每次 选择后比较的次数
            #//如果后面的元素比我选择元素还小 就互换位置
            if data_set[j] < data_set[minIndex] :
                minIndex=j
        temp = data_set[i]
        data_set[i]=data_set[minIndex]
        data_set[minIndex] = temp
    
    print(data_set)
    '''
    插入排序
    插入排序(Insertion Sort)的基本思想是:将列表分为2部分,左边为排序好的部分,右边为未排序的部分,循环整个列表,每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。
    '''
    
    source = [12,45,2,48,66,2,1,56,36,90,5,10,503]
    
    for i in range(1,len(source)):
        current_val = source[i]   #先记下每次大循环走到的第几个元素的值
        position = i
        while position>0 and source[position-1]>current_val:   #循环次数i大于0  and  前一位数大于后一位数
            source[position] = source[position-1] # 讲后一位数放到前面 , 根据值的大小排序
            position -= 1   #把前面的数放到后面
        source[position] = current_val  #已经找到了左边排序好的列表里不小于current_val的元素的位置,把current_val放在这里
        print(source)
  • 相关阅读:
    Python--__init__方法
    Python--面向对象编程
    用R语言对NIPS会议文档进行聚类分析
    docker oracle install
    java 删除字符串左边空格和右边空格 trimLeft trimRight
    mysql 表名和字段、备注
    docker学习
    shell爬虫
    shell 解析json
    SecureCRT 7.1.1和SecureFx key 亲测可用
  • 原文地址:https://www.cnblogs.com/siyz/p/7231569.html
Copyright © 2011-2022 走看看