算法
Enzo_Ferrari_430
勤练带来力量
展开
-
【排序算法1】双向冒泡排序(鸡尾酒排序)
总结一下最近学习的几个排序算法一开始找的是冒泡排序,在网上找资料时发现了这个鸡尾酒排序,比较有意思。鸡尾酒排序就是双向冒泡排序先找到最小的数字,把他放到第一位,然后找到最大的数字,放到最后一位。然后再找第二小的数字放到第二位,再找第二大的数字放到倒数第二位,以此类推,直到完成排序#include <stdio.h>#include <Windows.h>vo...原创 2018-11-21 11:28:51 · 427 阅读 · 0 评论 -
【排序算法6】快速排序
快速排序是一种分治的策略。 快速排序的中心思想: 1.寻找一个中心元素(通常为第一个数) 2.将小于中心点的元素移动至中心点之前,将大于中心点的元素移动至中心点之后 3.对上步分成的2个无序数组段重复1 2 操作直至断长为1为止简单来说:挖坑填数 + 分治法#include <stdio.h>#include <Windows.h&g...原创 2018-12-02 11:30:01 · 163 阅读 · 0 评论 -
【排序算法7】堆排序
此排序算法完全是看着MoreWindows大神的博客一边看一边体会一边跟着敲出来的,在这里还是非常感谢他。博客地址https://blog.csdn.net/MoreWindows/article/details/6709644上述地址对堆排序讲的很细致,这里就不讲了。但是不知道为什么那篇博客中评论里会这么多人说有错误。#include <stdio.h>#includ...原创 2018-12-02 12:00:34 · 151 阅读 · 0 评论 -
【排序算法2】插入排序
插入排序的中心思想就是将一个元素插入到已经排好序的数组当中。数组a[n]初始时,a[0]自成一格有序区,无序区为a[1…n-1] 令i = 1将a[i]并入当前有序区a[0…i-1]中形成有序区间i++并重复第二步直到 i == n -1#include &lt;stdio.h&gt;#include &lt;Windows.h&gt;#include "MyFunctions.h...原创 2018-12-01 21:44:53 · 333 阅读 · 0 评论 -
【排序算法3】希尔排序
此篇我是17年7月份有幸阅读到MoreWindows的此篇博客 希尔排序 可惜的是当时不是很懂。又因工作繁忙以至于忘了此事。直到最近换完工作才有想起有此坑还未填上,便又翻出看了一遍。这次有了全新的认识。特此记录现在才想起当时为何看的不是很懂,是因为此篇博客中的实验中间省略了一小部分。看似省略的这一小部分,却让我当时深深疑惑。还好现在已经按照博客中的意思将内容补细致一些。下面的代码注释部分,有我当...原创 2018-12-01 22:01:30 · 142 阅读 · 0 评论 -
【排序算法4】选择排序
选择排序的思想比较简单。每趟都记录下当前序列中最小元素的下标,并将该下标与当前序列起始下标交换内容。每趟都减少序列一个已排好序的元素。这里依旧感谢MoreWindows的博客插入排序这里还有对Swap函数实现的几种方式和数学证明。bitset用于二进制式的显示数据。但是我算法比较倾向于用纯C的方式写,所以Swap还是用的指针形式#include <stdio.h>...原创 2018-12-01 22:18:29 · 180 阅读 · 0 评论 -
【排序算法5】归并排序
归并排序是分治法的一种典型应用。归并排序的原理是合并两个有序序列是简单的。先对元素进行分割,分割到最后只有单一元素的时候进行归并。两两一组自底向上归并。#include <stdio.h>#include <Windows.h>#include "MyFunctions.h"//算法里的分治思想void Swap(int *,int *);voi...原创 2018-12-01 22:46:41 · 144 阅读 · 0 评论