当前位置: 首页 > news >正文

[数据结构]:14-选择排序(顺序表指针实现形式)(C语言实现)

目录

前言

已完成内容

选择排序实现

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博客

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

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

[数据结构]:13-插入排序(顺序表指针实现形式)(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, 10);PSeqListPrint(PSL);// 调试内容
//    int Array[] = {2, 3, 1, 5, 1, 10};memcpy(PSL.data, Array, sizeof(Array));
//    PSL.data = Array;
//    PSL.ListLength = 6;// 选择排序SelectionSort(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 <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>// 常量
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.
// 选择排序时间复杂度O(n^2),空间复杂度O(1)
//
// 选择排序
void SelectionSort(ElemType *Data, int Length) {/** 1. 外层循环控制要排序元素位置* 2. 内层循环控制查找后续最小元素下标* 3. 将两者进行交换*/for (int i = 0; i < Length; i++) {// 标记最小元素下标int MinPos = i;// 寻找最小元素下标for (int j = i + 1; j < Length; j++) {if (Data[j] < Data[MinPos]) {MinPos = j;}}// 交换Swap(Data[MinPos], Data[i]);}
}

结语

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

http://www.lryc.cn/news/34958.html

相关文章:

  • 基于C/C++综合训练 ----- 贪吃蛇
  • Unity 混合操作(Blending)
  • Hive建表高阶语句
  • 面向新时代,海泰方圆战略升级!“1465”隆重发布!
  • 带你感受一次JVM调优实战
  • ALG和STUN
  • 原生HTML放大镜
  • C++——模板
  • Chapter2.1:线性表基础
  • Spring源码解析-Spring 循环依赖
  • 从零开始学架构——架构设计的目的
  • Python 异步: 异步生成器(16)
  • .net6 web api使用EF Core,根据model类自动生成表
  • 计算机科学导论笔记(五)
  • 通过命令打Java可执行jar包
  • java基础系列(九) 接口和抽象类
  • Docker启动问题docker is starting…
  • Django/Vue实现在线考试系统-03-开发环境搭建-MySQL安装
  • python实现波士顿房价预测
  • Pinia不酸,保甜
  • uniapp生命周期
  • 经典卷积模型回顾11—Xception实现图像分类(matlab)
  • 移动App性能测试包含哪些内容?App性能测试工具有哪些?
  • AI测试的迷思
  • [ 红队知识库 ] 一些常用bat文件集合
  • Qt广告机服务器(上位机)
  • SOA架构的理解
  • 如何选择一款数据库?
  • week2
  • JavaScript的学习