
数据结构
哪吒的小跟班
纵有疾风起,人生不言弃!
展开
-
选择排序 - 堆排序
学习堆排序需要充分了解二叉树结构 基本思想:将待排序序列想象成前序遍历的完全二叉树。子程序为构造堆,形成「父节点大于子节点」结构,则根节点为最大值(不必比较左节点和右节点的大小)。主程序不断摘取根节点后再次调用子程序找次大值。 不稳定排序,时间复杂度O(nlogn),空间复杂度O(1) C实现 #include <stdio.h> #include <stdlib.h> #define MaxSize 10 //记录表的结构体 typedef struct { int原创 2021-04-23 14:13:41 · 144 阅读 · 0 评论 -
选择排序 - 简单选择排序
基本思想:每次从待排序的无序区中选择出最小的元素,与无序区的第一个元素交换,逐渐形成有序区。 不稳定排序,平均时间复杂度为 O(n2),空间复杂的 O(1)。 C实现: #include <stdio.h> void SelectSort(int R[], int n) { // i用来记录无序区边界 // j用来遍历无序区以查找最小元素 // k为记录最小值的下标 // v用作元素交换临时存储 int i, j, k, v; for (i = 0; i < n;原创 2021-04-03 18:31:08 · 101 阅读 · 0 评论 -
交换排序 - 冒泡排序
#include <stdio.h> #include <stdlib.h> #define MAXSIZE 10 typedef int KeyType; typedef struct { KeyType key; } Node; typedef Node SeqList[MAXSIZE + 1]; // 初始化R void Init(SeqList R, int n) { printf("\n初始化R: "); for (int i = 0; i原创 2021-04-02 10:57:40 · 146 阅读 · 0 评论 -
插入排序 - 直接插入排序
#include <stdio.h> #include <stdlib.h> #define MAXSIZE 10 // 定义结构体,该方式为符合数据结构书中形式,仅做参考 typedef int KeyType; typedef struct { KeyType key; } Node; typedef Node SeqList[MAXSIZE + 1]; // 因为哨兵的原因,这里+1 // 初始化R void Init(SeqList R, int n) {原创 2021-04-02 09:34:41 · 143 阅读 · 0 评论 -
二分查找
#include <stdio.h> #define MAXSIZE 100 typedef int KeyType; typedef struct { KeyType key; } SeqNode; typedef SeqNode SeqList[MAXSIZE]; // 初始化R void Init(SeqList R, int n) { printf("\n初始化R: "); for (int i = 0; i < n; i++) {原创 2021-03-31 14:09:42 · 114 阅读 · 0 评论 -
线性表-顺序表
#include <stdio.h> #define ListSize 100 // 表空间的大小根据实际需要来定义,这里假设为100 #define DataType int // DataType的类型根据实际情况定义,这里假设为int typedef struct { DataType data[ListSize]; // 数组data存放表结点 int length; // 线性表的当前表长(实际存储元素的个数) } SeqList; // 插原创 2020-11-30 19:56:30 · 140 阅读 · 0 评论