冒泡,直接插入,简单选择排序源程序

#include"stdio.h" #include"malloc.h" #define MAXSIZE 100 typedef int KeyType; /*关键码类型定义*/ typedef struct node { KeyType key; /*关键码定义*/ }ElemType; /*数据元素类型*/ typedef struct { ElemType elem[MAXSIZE+1]; /*elem[0]在下面排序中作为监测点*/ int length; }S_TBL; /*顺序存储的数据元素序列*/ void Print(S_TBL p); S_TBL *Creat() /*创建链表,申请存放数据的空间并给p*/ { S_TBL *p; 根据给定文件的信息,我们可以总结出以下相关的IT知识点: ### 1. 数据结构与类型定义 #### `typedef` 关键字 在C语言中,`typedef`关键字用于为已有的数据类型创建一个新的名称(别名),这使得代码更加可读且易于理解。例如: ```c typedef int KeyType; /*关键码类型定义*/ ``` 这里定义了一个新的类型`KeyType`,它是`int`类型的别名,可以用来存储整数。 #### 结构体定义 结构体是一种复合数据类型,允许开发者将不同类型的数据组合在一起。例如: ```c typedef struct node { KeyType key; /*关键码定义*/ } ElemType; /*数据元素类型*/ ``` 这里定义了一个名为`ElemType`的结构体类型,它包含一个`KeyType`类型的成员`key`。 #### 顺序存储表定义 为了实现排序算法,文件中定义了一个名为`S_TBL`的结构体,用于表示一个顺序存储的数据元素序列。例如: ```c typedef struct { ElemType elem[MAXSIZE+1]; /*elem[0]在下面排序中作为监测点*/ int length; } S_TBL; /*顺序存储的数据元素序列*/ ``` 这里`S_TBL`结构体包含了`elem`数组用于存储元素,以及一个`length`变量来记录元素的数量。 ### 2. 排序算法实现 #### 直接插入排序 直接插入排序是一种简单的排序方法,其基本思想是将待排序的元素逐一插入到已经有序的子序列中。具体步骤如下: 1. 假设数组中的第一个元素已经是有序的。 2. 对于未排序部分的每一个元素,从左至右扫描已排序的部分,找到合适的位置进行插入。 3. 重复步骤2,直到所有元素都被插入到已排序的序列中。 #### 冒泡排序 冒泡排序是一种简单的比较排序算法,其基本思想是从数组的第一个元素开始,两两比较相邻的元素,如果前一个比后一个大,则交换它们的位置,这样一趟下来就能把最大的元素“冒泡”到最后。这个过程会重复进行,直到整个数组都变得有序为止。 #### 简单选择排序 简单选择排序是一种不稳定的排序算法。其基本思想是在未排序序列中找到最小(或最大)的元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 ### 3. 函数定义及使用 #### 创建链表函数 `Creat()`函数用于创建一个顺序表,并初始化其中的元素。该函数首先提示用户输入元素的数量和具体的数值,然后返回一个指向`S_TBL`类型的指针。 #### 排序函数 文件中定义了三种不同的排序函数: - `InsertSort(S_TBL p)`:实现直接插入排序。 - `Bublesort(S_TBL p)`:实现冒泡排序。 - `SelectSort(S_TBL p)`:实现简单选择排序。 这些函数分别实现了不同的排序逻辑,并通过`Print()`函数打印排序后的结果。 #### 打印函数 `Print(S_TBL p)`函数用于打印顺序表中的所有元素。 ### 4. 主函数 `main()`函数是程序的入口点,它负责调用`Creat()`函数创建顺序表,并依次调用`InsertSort()`、`Bublesort()`和`SelectSort()`函数对数据进行排序。 通过以上分析,我们可以了解到该文件主要实现了一种基于C语言的数据结构操作和几种基础排序算法的具体实现过程。这对于学习数据结构和算法设计是非常有帮助的。































- 神速2014-01-06挺好的 还能用

- 粉丝: 1
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- XP-网络故障解决措施全集.doc
- 电气自动化在水利水电工程中的应用分析1.docx
- 时间触发通信:原理与应用
- 基于JSP的教学管理系统大学本科方案设计书.doc
- 基于PLC的物料分拣控制系统的设计.doc
- 实验项目管理-需求书.doc
- 最新高端简约英文版互联网科技金融商务工作计划总结PPT模PPT模板.pptx
- 移动通信技术与计算机网络.docx
- 面翻洪海广告设备有限公司项目管理书.doc
- 电网调度自动化系统的应用.pdf
- 互联网+时代高校线上线下混合式教学模式探究.docx
- 2017级大数据技术与应用专业人才培养方案.doc
- 论网络虚拟财产的民法界定.docx
- 基于 Python 实现自动驾驶的规划与控制代码
- 酒店无线网络覆盖解决方案.docx
- 电子科技16秋《供配电系统监控与自动化》在线作业2-辅导资料.doc


