![](https://img-blog.csdnimg.cn/1f2119c882c94f4a893ea19b8062dbbd.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
排序
排序算法独立专栏
独行的喵
这个作者很懒,什么都没留下…
展开
-
归并排序c语言版
归并排序概念:”归并“的含义是将两个或两个以上的有序表组合成一个新的有序表。假定待排序列表含有n个记录,则可将其视为n个有序的子表,每个子表的长度为1,然后两两归并,得到【n/2】个长度为2或1的有序表;继续两两归并…如此重复,直到合并成一个长度为n的有序表为止,这种排序方法称为2路归并排序。2路归并排序代码(c语言)思路:使用分治和递归的思想,Merge()函数负责将两段元素合并为一段元素,MergeSort()函数代表了归并排序,我们的基本思想是将整段元素分为两段:low-mid;mid+1原创 2021-11-21 18:03:44 · 967 阅读 · 0 评论 -
插入排序与希尔排序
插入排序思路:将未排序的元素逐个插入到已排序的元素中,使其保持有序:假设前i个元素有序(初始时默认第一个元素一定是有序的)而后n-i个元素无序,那么从第n-i个元素开始逐个将无序元素插入到有序元素当中,并保持有序元素集仍保持有序,从而使有序元素集不断增加,使无序元素集不断减少,直到全部元素都保持有序为止。#include <stdio.h>#include <stdlib.h>//插入排序void InsertionSort(int array[],int leng原创 2021-08-15 23:24:48 · 136 阅读 · 0 评论 -
快速排序简单思路及c语言实现——超详细
快速排序简单思路及c语言实现快速排序思路:主体思想:分治思想,一分为二处理数据。函数递归调用首先拿一个数组来举例子:假设我们创建一个长度为10的int数组:int num[10]={4,3,7,1,9,6,2,8,0,5};如果要对这个数组中的数据进行从小到大的排序,那么我们用快速排序实现的思路如下:首先,我们用两个变量分别来代表左右两个“哨兵”。这里我们假设创建两个int型的变量i和j,分别代表左哨兵和右哨兵。将他们的值分别初始化为数组最左边和最右边的索引位置。这里数组最左边的位原创 2020-09-29 13:08:38 · 976 阅读 · 1 评论 -
堆排序c语言
堆排序堆排序是基于堆的数据结构将待排序元素进行处理的一种排序堆的一棵具有特殊性质的完全二叉树:该二叉树具有堆序性,即任何一个节点的值大于等于其孩子节点(或小于等于其孩子节点的值);如果任一节点的值大于孩子节点的值,这样的完全二叉树称为大根堆;如果任意节点的值小于等于其孩子节点的值,这样的完全二叉树称为小根堆。基于上面的定义,不难得到堆一定具有这样的性质:堆顶元素一定是堆中最大或者最小的元素,所以我们可以不断输出堆顶元素,并时刻维护这个堆,就能保证我们每次输出的堆顶元素依次是待排序列中的最值。这样一来不原创 2021-09-04 12:31:31 · 132 阅读 · 0 评论