zoukankan      html  css  js  c++  java
  • 十种经典排序算法

    1、冒泡排序

    算法步骤:

    (1)

    def BubbleSort(array):
        for i in range(1, len(array)):  # 共需要len(array)-1趟
            flag = True  # 设置一个标志flag,如果这一趟没有发生元素的交换,说明排序已经完成,直接退出循环
            for j in range(len(array)-i):  # 每趟需要len(array)-i趟排序
                if array[j] > array[j+1]:
                    array[j],array[j+1] = array[j+1], array[j]
                    flag = False
            if flag: break
        return array

    2.选择排序

    算法步骤:

    (1)首先在未排序的数组中找到最小数,存在已排序的序列的起始位置

    (2)再从未排序的序列中找到最小数,将它放在已排序序列的末尾

    (3)重复第二步操作,直到所有元素排序完成。

    # 数组前面存放已排序的序列,后面存放未排序的
    def
    SelectionSort(array): for i in range(len(array)-1): # 经过len(array) - 1 次 i 代表已排序的元素 min = i for j in range(i+1, len(array)): # 将min指向的元素与未排序的元素进行比较 j 代表未排序元素索引(i+1,len(array)) if array[min] > array[j]: min = j if not min == i: array[i], array[min] = array[min],array[i] return array

    3.插入排序

    算法步骤:

    (1)将数组的第一个元素作为有序序列,其他元素作为无序序列

    (2)从第二个元素开始循环,将元素插入有序序列(从末尾开始比较)如果元素大于待插入元素,就将该元素后移一位。

    def InsertSort(array):
        for i in range(1, len(array)):
            temp = array[i]  # 将待插入元素存入temp
    j
    = i while j > 0 and array[j-1] > temp: # 从末尾开始比较 array[j] = array[j-1] j -= 1 if not j == i: # 如果存在比待插入元素大的 array[j] = temp return array
  • 相关阅读:
    windows server 2008 R2下如何快速开启远程桌面、1433、telnet
    利用Lambda获取类中属性名称
    EntityFramework之迁移操作(五)
    EntityFramework之多对多关系(四)
    EntityFramework之一对多关系(三)
    EntityFramework之一对一关系(二)
    EntityFramework之创建数据库及基本操作(一)
    Javascript短路表达式
    Javascript中call、apply函数浅析
    Javascript"怪异"现象
  • 原文地址:https://www.cnblogs.com/nxrs/p/10999634.html
Copyright © 2011-2022 走看看