排序

冒泡排序:设待排序的序列中元素个数为n,首先比较最后两个元素,如果逆序则交换,否则继续比较前两个。

图片发自简书App


插入排序:每一步将待排序的元素,插入到前面拍好序的适当的位置上去,直到元素全部插入为止。

直接插入排序:当第i个元素时,前面的i-1个已经排好序,这时,把i插入到前面合适的位置,其后面的元素后移。总的比较次数和元素比较次数都是n(n-1) /2;

折半插入排序:一个顺序表中有一个序列,其中0到i-1是已经排好序的元素,则在i插入时,利用折半查找法寻找插入位置。

图片发自简书App


希尔排序:设计一个步长序列,在排序时,反向使用步长序列。设待排序的n个元素,取一个整数步长h<n作为间隔,将全部元素分为h个子序列,将所有距离为h的元素放入同一个序列,在每一个子序列中分别施行插入排序,然后减小间隔,直到h为1,将所有元素放在同一个序列中排序为止。

直接选择排序:

1) 在一组元素a[i]~a[n-1]中选择具有最小关键字的元素。

2)若不是这组元素中的第一个元素,则将它与这组元素中的第一个元素交换。

3)在这组元素中,剔除最小的元素,在剩下的a[i+1]~a[n-1]中重复执行1,2步,直到剩余元素只有一个为止。

图片发自简书App


快速排序:基于一种分治策略,其思路是取待排序的元素中的某个元素作为划分元素,按照该划分元素的关键字,将整个序列分为左右两个子序列,左侧的子序列中所以元素都小于或等于划分元素的关键字,右侧子序列元素都大于划分元素的关键字,两个子序列使用同样的方法划分,直到所有元素排序完成为止。

图片发自简书App

归并排序:

二路归并:将两个有序的序列合并成一个新的有序序列。

图片发自简书App

自底向上:从一个,两个排序,两组排序,等等。

图片发自简书App

自顶向下:把一个分成两段,然后再不断的往下分,最后分到1个,在回退成一组。

图片发自简书App

堆排序:第一,构造堆,插入构造,并不断调整。

第二种方法,将数据元素放入数组中,并将数组视为一棵尚未满足堆性质的完全二叉树,从右往左,反向层次遍历二叉树的所有非叶子节点,并对从小到大的各棵子树通过筛选运算使之成为堆。

图片发自简书App
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 排序的基本概念 在计算机程序开发过程中,经常需要一组数据元素(或记录)按某个关键字进行排序,排序完成的序列可用于快...
    Jack921阅读 5,366评论 1 4
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 10,605评论 0 52
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 5,034评论 0 2
  • 简单排序 插入排序 想象一下插队的过程... 一个人通过插队的方式排到前面,而将原本在他前面的人挤到了后面的位置。...
    Kasheem_Lew阅读 5,397评论 0 4
  • 一、概述 排序算法概念 在计算机科学与数学中,一个排序算法是将一组杂乱无章的数据按一定的规律顺次排列起来的算法。排...
    简书冷雨阅读 4,750评论 0 0

友情链接更多精彩内容