
排序算法
数据结构中经典的排序算法
卡伊德
我没有超能力,但我能用代码嗨翻你!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
二分查找——C语言
二分查找思想:先确定待查记录所在范围(区间),然后逐步缩小范围直到找到或找不到该记录为止。代码:#include<stdio.h>#include<stdlib.h>#define LIST_SIZE 12typedef int ElemType;typedef struct{ ElemType *elem; int length;}SSTa...原创 2019-10-30 23:31:48 · 231 阅读 · 0 评论 -
简单选择排序
简单选择排序算法:一趟选择排序:通过n-i次关键字间的比较,从n-i+1个记录中选择出最小的记录,并和第i(1<= i <= n)个记录交换之。代码:#include<stdio.h>#define MAXSIZE 20 //数组大小typedef int KeyType; //关键字类型typedef int InfoType; //元素信息...原创 2019-10-25 23:26:46 · 173 阅读 · 0 评论 -
插入排序
插入排序 :C语言编写的插入排序,思想在程序注释中体现。代码如下#include<stdio.h>#define MAXSIZE 20 //数组大小typedef int KeyType; //关键字类型typedef int InfoType; //元素信息类型//数组中元素的信息typedef struct{ KeyType key; //元素排...原创 2019-10-25 11:21:36 · 147 阅读 · 0 评论 -
快速排序
快速排序算法:思想:附设两个指针low和high,他们的储值分别为low和high,设枢轴记录的关键字pivotkey,则首先从high所指位置起向前搜索找到第一个关键字小于pivotkey的记录和枢轴记录互相交换,然后从low所指位置向后检索,找到第一个关键字大于pivotkey的记录和枢轴记录互相交换,重复这两步直至low=high为止。优化:先将枢轴记录暂存在r[0]的位置...原创 2019-10-25 10:33:43 · 256 阅读 · 0 评论 -
冒泡排序
用C语言编写的基本操作:冒泡排序。思想都已在代码注释中注明,可直接复制粘贴运行:本人用的环境是vc++6.0#include<stdio.h>void swap(int *p,int *q){ int temp = *p; *p = *q; *q = temp;}/*冒泡排序:升序,从前往后冒泡。最多进行n-1次冒泡,第i次冒泡会将前n-i+1个元素的最大...原创 2019-10-24 00:09:04 · 196 阅读 · 0 评论 -
归并排序——C语言
归并排序思想:假设出示序列含有n个记录,则可看成是n的有序的子序列,每个子序列的长度为1,然后两两归并,得到n/2个长度为2或1的有序子序列;再两两归并,……,如此重复,直至得到一个长度为n的有序序列为止。代码:#include<stdio.h>#define MAXSIZE 20 //数组大小typedef int KeyType; //关键字类型typed...原创 2019-10-27 00:26:17 · 170 阅读 · 0 评论 -
堆排序算法——C语言
堆排序本次排序结果为非递减,采用的是大顶堆。思想小顶堆调整: 假设输出堆顶元素之后,以堆中最后一个元素替代之,此时根节点的左右值比较,由于左子树根节点的值大于右子树的根节点的值且大于根节点的值,则将27和97交换,由于97替代了27之后破坏了右子树的堆,则需要进行上述相同的调整,直至叶子节点,此时堆顶为n-1个元素中的最大值,重复上述过程,将堆顶元素27和堆中最后一个...原创 2019-10-29 00:03:56 · 548 阅读 · 0 评论