
排序算法
记录了冒泡排序及其改进版、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序这七大排序算法的原理及C与C++代码。
雨菁ling
一名前端程序员,记录前端的点点滴滴~~~
展开
-
归并排序——C与C++实现
题目:随机产生10个0-9的整数,用归并排序法对其进行排序。(升序) 算法分析: 基本思想: (1)将一个数组分成两组,分别为A和B。 (2)将A和B各自再分成两组。 (3)依次类推,当分出来的小组只有一个数据时,可以认 为这个小组组内已经达到了有序。 (4)依次合并相邻的二个小组就可以了。合并结束后便形成一个有序的数组。 C代码: #define _CRT_SECURE_NO_WARNING...原创 2020-04-28 11:48:40 · 204 阅读 · 0 评论 -
堆排序——C与C++实现
题目:随机产生10个0-9的整数,用推排序法对其进行排序。(升序) 算法分析: 堆是具有以下性质的完全二叉树: 每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆; 每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。 一个包含n个大顶堆的的堆排序的核心思想如下: (1)将待排序序列构造成一个大顶堆。此时,整个序列的最大值就是堆顶的根节点。 (2)将堆的第一个元素与最后一个元素进行交换,...原创 2020-04-27 09:49:15 · 184 阅读 · 0 评论 -
快速排序——C与C++实现
题目:随机产生10个0-9的整数,用快速排序法对其进行排序。(升序) 算法分析: 基本思想为:通过一趟排序将待排序的序列分割为前后两个部分,其中一部分序列中的数据比另一部分序列中的数据小。然后分别对这前后两部分的数据用同样的方法进行排序,直到整个序列有序为止。 C代码: #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #inclu...原创 2020-04-26 09:27:07 · 167 阅读 · 0 评论 -
希尔排序——C与C++实现
题目:随机产生10个0-9的整数,用希尔排序法对其进行排序。 算法分析: 希尔排序法是插入排序的升级版,又称缩小增量排序。其基本思想为:先将整个待排元素序列分割成若干个子序列,分别对子序列进行排序,然后依次缩减增量再进行排序,重复上述操作,直到划分间隔变为1。 如何选取间隔值是一个比较复杂的问题,涉及数学上一些尚未解决的难题。经查找相关书籍,划分方法基本有两种: 第一种:increasement...原创 2020-04-25 08:40:46 · 229 阅读 · 0 评论 -
插入排序——C与C++排序
题目:随机产生10个0-9的整数,用插入排序法对其进行排序。 程序分析 : 插入排序法的过程如下: 初始状态 {(3),2,5,1} 第一趟排序 {(2,3),5,1} 第二趟排序 {(2,3,5),1} 第三趟排序 {(1,2,3,5)} C代码: #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #inc...原创 2020-04-24 10:41:49 · 352 阅读 · 0 评论 -
选择排序——C与C++实现
题目:对10个数进行排序(降序)。 程序分析 :利用选择排序法 ,将第1个元素与后边的9个元素依次进行比较,选择最大的一个与之进行交换。以此类推… 注意:如果想要实现升序排列,将第1个元素与后边的9个元素依次进行比较,选择最小的一个与之进行交换。以此类推… C实现: #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int SortA...原创 2020-04-15 08:35:01 · 347 阅读 · 0 评论 -
冒泡排序——C与C++实现
题目:用冒泡排序法对10个数进行排序。(升序) 程序分析: (1)从第一个元素开始,依次对相邻的两个元素进行比较 ,若前一个元素的值大于后一个元素的值 ,将二者的值进行交换,反之则不进行任何操作。 (2)当倒数第二个元素与最后一个元素比较结束之后,整个数组中值最大的那个元素排在数组中最后一个位置。 (3)重复步骤(1)和(2)(需要注意的是,已经排好的元素将不再参与比较),直到所有的元素全部排完。...原创 2020-04-23 08:33:14 · 167 阅读 · 0 评论