排序
文章平均质量分 51
ZZZNNNKKK
这个作者很懒,什么都没留下…
展开
-
冒泡排序
排序原创 2018-01-08 21:15:30 · 288 阅读 · 0 评论 -
希尔排序
排序原创 2018-01-08 21:10:52 · 187 阅读 · 0 评论 -
插入排序
插入排序有两种:1.直接插入排序对于给定的一组记录,初始时假定第一个记录自成一个有序的序列,其余的记录为无序序列;接着从第二个记录开始,按照记录的大小依次将当前处理的记录插入到其之前的有序序列中,直至最后一个记录插入到有序序列为止。#include void InsertSort(int par_array[], int array_size){ int i, j;原创 2017-12-05 20:36:13 · 188 阅读 · 0 评论 -
快速排序
快速排序是一种非常高效的排序方法,采用“分而治之”的思想,把大的拆分为小的,小的在拆分为更小的。原理是:对于一组给定的记录,通过一趟排序后,将原序列分为两部分,其中前部分的所有记录均比后部分的所有记录小,然后再依次对前后两部分的记录进行快速排序,递归该过程,直到序列中的所有记录均为有序为止。快速排序特点:稳 定 性:不稳定平均时间复杂度: O(n原创 2018-01-08 21:26:26 · 219 阅读 · 0 评论 -
简单选择排序
简单选择排序是一种简单直观的排序算法,他的基本原理是:对于给定的一组记录,经过第一轮比较后得到最小的记录,然后将记录与第一个记录的位置进行交换;接着对不包括第一个记录以外的其他记录进行第二轮排序,得到最小的记录并与第二个记录进行位置交换;重负该过程,直到进行比较的记录只有一个为止。简单选择排序特点:最 大 特 点:移动次数少。时间复杂度:总共比较 n(n-1)/2 次 ,移动次数最原创 2018-01-24 10:54:41 · 302 阅读 · 0 评论 -
基数排序
基数排序(Radix Sorting)是一种借助多关键字排序的思想对单逻辑关键字进行关系的方法。基数排序不需要进行记录关键字间的比较。主要分为两个过程: (1)分配,先从个位开始,根据位值(0-9)分别放到0~9号桶中(比如53,个位为3,则放入3号桶中)(2)收集,再将放置在0~9号桶中的数据按顺序放到数组中 基数排序的特点:稳 定 性:稳定时原创 2018-01-24 20:01:02 · 313 阅读 · 0 评论 -
堆排序
堆排序是将序列人为的类比做堆来处理,分为大堆和小堆,大堆就是双亲结点大于孩子结点,这里的孩子自身可能也是“双亲”,那么这个“双亲”还要大于它的孩子,小堆于此相反。 当所有结点满足这个大堆的条件后,最上面的根节点肯定是这个序列中最大的数,然后我们将这个数与最后一个结点交换,再对除了最后一个结点外的所有结点进行大堆处理,依次反复,最终会将这个序列排成从小到大的顺序。首先将序列按原创 2018-01-25 20:20:07 · 205 阅读 · 0 评论 -
归并排序
利用递归与分治技术将数据序列划分为越来越小的半子表,再对半子表排序,最后再用递归步骤将排好序的半子表合并成为越来越大的有序序列。原理如下:对于给定的一组记录,首先将两个相邻的长度为1的子序列进行归并,得到n/2个长度为2或者1的有序子序列,在将其两两归并,反复执行此过程,直到得到一个有序的序列为止。#include #include void Merge(int array[原创 2018-01-26 20:22:55 · 207 阅读 · 0 评论 -
八种排序的比较
原创 2018-01-28 17:14:24 · 382 阅读 · 0 评论