[数据结构]: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语言实现记录,内有不足,可留言,可讨论。

相关内容

热门资讯

2021高考朋友圈范文(精简... 2021高考朋友圈范文 篇一高考,是每个学生都要经历的一场考试,也是人生中的一次重要转折点。对于即将...
全国高考作文题目【实用3篇】 全国高考作文题目 篇一:如何提高学生的创造力创造力是一种重要的能力,对于学生的发展和未来的成功都具有...
高考作文真题:孟子三乐(推荐... 高考作文真题:孟子三乐 篇一孟子是我国古代伟大的思想家和教育家,他提出了“三乐”,即“乐在其中,乐在...
高考满分作文:忧与爱(精彩3... 高考满分作文:忧与爱 篇一当代社会面临着种种挑战和困扰,人们的忧虑与焦虑也随之而来。然而,在这个瞬息...
高考零分作文我想找媳妇(精彩... 高考零分作文我想找媳妇 篇一高考零分作文我想找媳妇在高考零分作文中,我想谈谈我对未来媳妇的期望。虽然...
四川2009年高考状元出炉 ... 四川2009年高考状元出炉 文科634理科655 篇一在四川省2009年高考中,一位学子以出色的表现...
高考文学常识-中国古人的姓氏... 高考文学常识-中国古人的姓氏字号 篇一中国古代的姓氏字号是中国文化的重要组成部分,也是高考文学常识中...
2005高考全国作文题目一览... 2005高考全国作文题目一览 篇一2005年高考全国作文题目一览1. 有人认为“知识改变命运”,你对...
浙江高考满分作文:文如其人,... 浙江高考满分作文:文如其人,足矣 篇一文如其人,足矣文化是一个国家和民族的灵魂,而文化的传承与发展离...
高考作文万能素材【经典6篇】 高考作文万能素材 篇一篇一内容:中国传统文化的传承与发展中国传统文化是中华民族的瑰宝,具有悠久的历史...
议论文论据【精简3篇】 议论文论据 篇一如何应对网络暴力网络暴力,指的是通过互联网平台上对他人进行辱骂、威胁、诽谤等恶意行为...
燃烧翅膀作文【精简3篇】 燃烧翅膀作文 篇一燃烧翅膀人生如同一只鸟,需要翅膀才能飞翔。而翅膀的燃烧,代表着人们为了梦想和目标不...
写给亲戚高考的信范文【优选6... 写给亲戚高考的信篇一亲爱的亲戚:您好!我知道您即将面临人生中的一次重要考试——高考。这是一个决定您未...
江苏高考单招文章范文【最新6... 江苏高考单招文章范文 篇一高考单招:选择单招的原因和优势近年来,随着高考竞争的激烈化,越来越多的学生...
语文2022高考作文范文(通... 语文2022高考作文范文 篇一:《诗意校园,我心向往》近年来,随着高考的日益临近,对于高中生来说,语...
高考百日誓师誓词【精简6篇】 高考百日誓师誓词 篇一高考百日誓师誓词高考百日誓师誓词,是每个高三学生都会经历的一个重要时刻。在这百...
高考满分作文忧与爱【优质3篇... 高考满分作文忧与爱 篇一:忧与爱的平衡人生中的忧与爱,是一对永恒的话题。对于高中生来说,高考是他们人...
高一语文三十六计【最新3篇】 高一语文三十六计 篇一如何运用高一语文三十六计提升写作能力在高一语文学习中,我们常常会遇到各种写作任...
高一木兰草原春游作文【最新6... 高一木兰草原春游作文 篇一春天来了,温暖的阳光洒在大地上,给大自然注入了勃勃生机。为了让同学们感受春...
我们家的猫高二作文【通用3篇... 我们家的猫高二作文 篇一我们家的猫我们家养了一只可爱的猫咪,它是我们的家庭成员之一,给我们带来了无尽...