zoukankan      html  css  js  c++  java
  • 排序

    冒泡排序

      冒泡排序只需两个循环即可实现,外循环从1到n依次递减,内循环执行n-i长度的两两对比交换。

      for i in range(1,n):

          for j in range(1,n-i):

               对比j前后两个数据大小

    选择排序

    和冒泡一样,两个循环,不过内循环变成寻找n-i长度内的最小/大值,然后和相应位置进行交换。

    直接插入排序(小数据,基本有序)

    对于有序数列,新的数据直接插入到序列中,但是对于较大规模的数据,可以使用希尔排序。

    希尔排序(改进的直接插入排序)

    将数据进行分组,间隔取数分为不同的组,对不同的组分别进行直接插入排序,逐步缩小增量,(2^n-1,...,1)

    归并排序

    顾名思义,使用归并算法,将数据两个分组,逐步分组至不能再进行分组,两两对比,然后再合并。

    堆排序

    借用完全二叉树的思想来实现,当使用最大堆时,要求父节点大于子节点,首先建堆满足条件,此时就得到了最大值(即根节点),然后将最大值放到数组最后,然后对前面的继续使用堆排序,即可得到有序数列。

    快速排序

    选择一个主元,使得左边的数据都比它小,有的数据都比它大,方法大致为从两端开始,左边找比它大的和右边比它小的,然后这两个交换,直到两个标志相遇,然后相遇点和主元交换即可,然后对两边分别使用快速排序即可得到有序数列。

    ##未完待续

  • 相关阅读:
    什么是webview
    juqery.fn.extend和jquery.extend
    LeetCode
    5. Longest Palindromic Substring
    42. Trapping Rain Water
    11. Container With Most Water
    621. Task Scheduler
    49. Group Anagrams
    739. Daily Temperatures
    3. Longest Substring Without Repeating Characters
  • 原文地址:https://www.cnblogs.com/xbyfight/p/11522731.html
Copyright © 2011-2022 走看看