[数据结构]:11-冒泡排序(顺序表指针实现形式)(C语言实现)
创始人
2024-05-29 14:56:05
0

目录

前言

已完成内容

冒泡排序实现

01-开发环境

02-文件布局

03-代码

01-主函数

02-头文件

03-PSeqListFunction.cpp

04-SortCommon.cpp

05-SortFunction.cpp

结语


前言

        此专栏包含408考研数据结构全部内容,除其中使用到C++引用外,全为C语言代码。使用C++引用主要是为了简化指针的使用,避免二重指针的出现。

已完成内容

[数据结构]:01-顺序表(C语言实现)_Chandni.的博客-CSDN博客

[数据结构]:02-单链表(C语言实现)_Chandni.的博客-CSDN博客

[数据结构]:03-栈(C语言实现)_Chandni.的博客-CSDN博客

[数据结构]:04-循环队列(数组)(C语言实现)_Chandni.的博客-CSDN博客

[数据结构]:05-循环队列(链表)(C语言实现)_Chandni.的博客-CSDN博客

[数据结构]:06-队列(链表带头结点)(C语言实现)_Chandni.的博客-CSDN博客

[数据结构]:07-二叉树(无头结点)(C语言实现)_Chandni.的博客-CSDN博客

[数据结构]:08-顺序查找(顺序表指针实现形式)(C语言实现)_Chandni.的博客-CSDN博客

[数据结构]:09-二分查找(顺序表指针实现形式)(C语言实现)_Chandni.的博客-CSDN博客

[数据结构]:10-二叉排序树(无头结点)(C语言实现)_Chandni.的博客-CSDN博客 

冒泡排序实现

01-开发环境

        语言:C/C++14

        编译器:MinGW64

        集成开发环境:CLion2022.1.3

02-文件布局

        请在CLion集成开发环境中创建C++可执行程序,否则无法运行,原因上面已解释。

                        ​​  

03-代码

01-主函数

        用于测试冒泡排序。

// 顺序表以指针形式实现(申请堆空间,可动态控制顺序表大小)--数组实现形式不可以动态控制顺序表大小
#include "./Head/PSeqSearchData.h"
#include "./Source/PSeqListFunction.cpp"
#include "./Source/SortCommon.cpp"
#include "./Source/SortFunction.cpp"int main() {// 顺序表初始化PSeqList PSL;PSeqListCreate(PSL, 5);PSeqListPrint(PSL);// 调试内容
//    int Array[] = {2, 3, 1, 5, 2, 10, 3};
//    memcpy(PSL.data, Array, sizeof(Array));
//    PSL.ListLength = 7;// 冒泡排序BubbleSort(PSL.data, PSL.ListLength);PSeqListPrint(PSL);return 0;
}

02-头文件

        用于存储结构体和常量等。

//
// Created by 24955 on 2023-03-02.
// 顺序表以指针形式实现(申请堆空间,可动态控制顺序表大小)-数组实现形式不可以动态控制顺序表大小
//#ifndef INC_01_SEQUENCESEARCH_PSEQSEARCHDATA_H
#define INC_01_SEQUENCESEARCH_PSEQSEARCHDATA_H
// 头文件
#include 
#include 
#include 
#include // 常量
typedef int ElemType;// 结构体
// 顺序表结构体(以指针形式实现)
typedef struct {ElemType *data;int ListLength;
}PSeqList;
#endif //INC_01_SEQUENCESEARCH_PSEQSEARCHDATA_H

03-PSeqListFunction.cpp

        用于存储顺序表初始化和打印输出等函数。

//
// Created by 24955 on 2023-03-02.
// 顺序表以指针形式实现(申请堆空间,可动态控制顺序表大小)--数组实现形式不可以动态控制顺序表大小
// 不使用哨兵
//
// 顺序表初始化
void PSeqListCreate(PSeqList &PSList, int Length) {/** 1. 为顺序表申请堆空间* 2. 根据Length大小设置顺序表长度* 3. 随机数初始化顺序表*/PSList.ListLength = Length;PSList.data = (ElemType *) malloc((PSList.ListLength) * sizeof(ElemType));srand(time(NULL));for (int i = 0; i < PSList.ListLength; i++) {PSList.data[i] = rand() % 100;}
}// 顺序表打印输出
void PSeqListPrint(PSeqList PSList) {/** 1. 0号元素为哨兵因此从1号元素开始打印输出*/for (int i = 0; i < PSList.ListLength; i++) {printf("%3d", PSList.data[i]);}printf("\n");
}

04-SortCommon.cpp

        用于存储排序公用函数。

//
// Created by 24955 on 2023-03-06.
//
// 交换两值元素
void Swap(ElemType &ElemOne, ElemType &ElemTwo) {/** 1. 交换两元素值*/ElemType TemporaryData;TemporaryData = ElemOne;ElemOne = ElemTwo;ElemTwo = TemporaryData;
}

05-SortFunction.cpp

        用于存储冒泡排序函数。

//
// Created by 24955 on 2023-03-06.
//
// 冒泡排序--设立哨兵(可不设置)
void BubbleSort(ElemType *data, int Length) {/* 冒泡排序时间复杂度O(n^2),空间复杂度O(1)* 1. n元素冒泡排序交换n次* 2. 每次对其中的n-i个元素进行交换判断* 3. 经过n(n-1)/2次完成排序*/ElemType TemporaryData;// 从后往前排,首先排好其中最小的元素(放在第一个位置)for (int i = 0; i < Length; i++) {// 设立哨兵bool flag = true;// 此处j != 0 (两两交换10个元素交换9次,且j-1>=0)for (int j = Length - 1; j > i; j--) {// 若前一元素大于后一元素,交换两元素值if (data[j - 1] > data[j]) {Swap(data[j - 1], data[j]);flag = false;}}// 若内层循环未发生交换,则表明当前数组已经为有序序列// break结束循环if (flag) {break;}}
}

结语

        此博客主要用于408考研数据结构C语言实现记录,内有不足,可留言,可讨论。

相关内容

热门资讯

三峡的导游词 三峡的导游词(15篇)  作为一名优秀的旅游从业人员,就难以避免地要准备导游词,导游词不是以一代百、...
五岳寨景区导游词 五岳寨景区导游词各位朋友、各位来宾: 欢迎大家来到五岳寨观光、旅游(度假、考察)。 今天由我为大家导...
对于黄山奇石的介绍导游词 对于黄山奇石的介绍导游词范文(通用5篇)  作为一名旅游从业人员,就有可能用到导游词,一篇完整的导游...
世界遗产丽江古城导游词 世界遗产丽江古城导游词  大家好!我是你们游览丽江古城的导游。我很高兴能与大家共渡这快乐时光!我姓张...
五台山导游词 五台山导游词15篇  作为一名可信赖的导游人员,有必要进行细致的导游词准备工作,导游词事实上是一种对...
庐山的导游词 关于庐山的导游词5篇  “不识庐山真面目,只缘身在此山中”,相信很多人都读过这首古诗,庐山亦是我国非...
峨眉山和乐山大佛英文导游词 峨眉山和乐山大佛英文导游词  乐山大佛,又名凌云大佛,位于四川省乐山市南岷江东岸凌云寺侧,濒大渡河、...
澄江抚仙湖导游词 澄江抚仙湖导游词  各位游客:我们知道,云南著名的三大湖泊分别是滇池、洱海和抚仙湖。下面我们将去追踪...
导游词的写法 导游词的写法  导游词是导游人员引导游客观光游览时的讲解词,是导游员同游客交流思想,向游客传播文化知...
满洲里俄罗斯套娃广场导游词 满洲里俄罗斯套娃广场导游词  俄罗斯套娃广场是满洲里标志性旅游景区,广场集中体现了满洲里中、俄、蒙三...
连云港大伊山导游词 连云港大伊山导游词  作为一名优秀的导游,有必要进行细致的导游词准备工作,导游词是导游员同游客交流思...
介绍丽江古城的导游词 介绍丽江古城的导游词  丽江古城是联合国教科文组织确认的“世界文化遗产”和国务院公布的“中国历史文化...
汾河公园导游词 汾河公园导游词7篇  作为一位兢兢业业的旅游从业人员,时常需要用到导游词,导游词由引言、主体和结语三...
陕西大雁塔导游词 陕西大雁塔导游词7篇  作为一名尽职尽责的导游,时常要开展导游词准备工作,导游词是导游员同游客交流思...
北京八达岭长城旅游导游介绍词 北京八达岭长城旅游导游介绍词  各位游客,你们好,欢迎来到八达岭长城。今天由我为大家做导游,在这里祝...
灵山大佛完整导游词 灵山大佛完整导游词  灵山大佛坐落于无锡马山秦履峰南侧的小灵山地区,该处原为唐宋名刹祥符寺之旧址。下...
敦煌市鸣沙山和月牙泉风景名胜... 敦煌市鸣沙山和月牙泉风景名胜区导游词  鸣沙山和月牙泉风景名胜区位于甘肃省河西走廊西端的敦煌市。敦煌...
虎山长城导游词 虎山长城导游词  各位游客,大家好!  欢迎大家来到虎山长城观光旅游。很高兴能陪大家一起参观,希望大...
张家界天子山索道的导游词 张家界天子山索道的导游词  尊敬的各位来宾,各位朋友:  大家好!  今天,我们游览的是张家界武陵源...
雅鲁藏布大峡谷的导游词 雅鲁藏布大峡谷的导游词范文(通用12篇)  导游词是导游人员引导游客观光游览时的讲解词,是导游员同游...