排序
胡思先生
这个作者很懒,什么都没留下…
展开
-
最简单的排序:冒泡排序
冒泡排序: 核心思想: 交换思想:通过比较数组中两个数的大小来对换两个数的位置。 特点:将较大的数向序列的尾部移动,将较小的数向序列前方移动。 void BullSort(int* a, int n) { for (int i = 0; i < n; i++)//每次循环,将已经筛选出的最大的数剔除。 { //记住,j需要-1,保证a[j+1]不会越界访问。 for (int j...原创 2019-01-11 18:05:11 · 274 阅读 · 0 评论 -
最low的排序:直接选择排序
选择排序 基本思想 每一次从待排序的数据元素中选出最小(最大)的元素,存放在序列的起始位置, 直到待排序的数据元素全部排完。 代码实现: void ChooseSort(int* a,int n) { for (int i = 0; i < n; i++)//将第i个数剔除,从i+1开始选择排序。 { for (int j = i; j < n; j++) { if...原创 2019-01-11 23:33:48 · 167 阅读 · 0 评论 -
希尔排序:优化版的直接插入排序
希尔排序(缩小增量法) 中心思想 先选定一个数组,把待排序的数据分为gap个组,将所有距离为gap的数据记录在 同一个组内,并对每一组内的记录进行排序,然后取(gap/3)+1,再进行上述操作。 当gap &gt; 1时都是预排序,目的是让数组更接近于有序。 当gap == 1时,数组已经接近有序的了 取(gap/3)+1,重复该操作 代码实现: (交换思想) void ShellSort(...原创 2019-01-12 15:11:41 · 211 阅读 · 0 评论 -
堆排序:利用堆实现的排序
堆排序 特点: 堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。它是通过堆来进行选择数据 重点! 排升序要建大堆,排降序建小堆 (升序)从小到大(降序)从大到小 1.建立小堆 void HeapBuilt(int* a, int n, int i)//建小堆 { int parent = i; int child = parent * 2 +...原创 2019-01-12 17:04:08 · 536 阅读 · 0 评论