数据结构
xyf haha~
Study hard! Live seriously!
展开
-
排序算法之(四)快速排序
1,基本原理(1)先从数列中取一个元素作为基准数(2)扫描数列,将比基准数小的放在左侧,比基准数大的或相等的放在右侧(3)再对左右区间重复第二步,直到各区间只有一个数示例:第一次:(6),7,4,8,9,2,3,11//6为基准数,将4,2,3放在6的左边 第二次:(4),2,3,6,(7),8,9,11//左边将4作为基准数,将2,3放在4左侧,6在4右侧//右边将7作为基准数,都比7大在7的右侧第三次:(2),3,4,6,7,(8),9,11//现在只有2,3和8,9原创 2021-08-29 11:25:22 · 148 阅读 · 0 评论 -
排序算法之(三)插入排序
1,基本原理插入排序是通过构建有序序列,对于未排序数据,在已排序列中向后扫描,将数据插入到一个有序数列中,从而得到一个新的有序数列示例:第一次:9,1,5,8,3 //1比9小,插到9前面第二次:1,9,5,8,3 //5比9小比1大,插到9前面第三次:1,5,9,8,3 //8比9小比5大,插到9前面第四次:1,5,8,9,3 //3比5小比1大,插到5前面第五次:1,3,5,8,9 //2,实现方法双重循环void charu(int *arr,int n)原创 2021-08-29 09:17:50 · 203 阅读 · 0 评论 -
排序算法之(二)选择排序
1,基本原理从第一个数开始和后面的数比较,选择最小的数,将两数交换,接着从第二个数开始与后面的数比较,这样就得到了一个升序排列的数列第一次:9,1,5,8,3 //交换 9 1第二次:1,9,5,8,3 //交换 9 3第三次:1,3,5,8,9 //不交换第四次:1,3,5,8,9 //不交换第五次:1,3,5,8,9 //不交换2,实现方法2.1双重循环void xuanze(int *arr,int n){ if(n < 2) {ret原创 2021-08-27 10:38:57 · 134 阅读 · 0 评论 -
排序算法之(一)冒泡排序
基本原理冒泡排序是一种交换排序,基本思想是将前一个数与后一个数进行比较,将较大的数放到后面,接着将第二个数和后一个数比较,这样将每次找到的大数放在后面,形成一个有序数列例如:第一次:9,1,5,8,3,7第二次:1,9,5,8,3,7第三次:1,5,9,8,3,7第四次:1第五次:第六次:...原创 2021-08-27 09:02:39 · 730 阅读 · 0 评论 -
时间复杂度
时间复杂度定义在进行算法分析时,语句执行次数T(n)是关于问题规模的函数,进而分析,T(n)代表执行总次数,而算法的时间复杂度用 O()表示,记作:T(n) = O(f(n))表示问题随问题规模的增大,算法执行时间的增长率和f(n)的增长率相同。一般情况下随着n的增大,T(n)增长最慢的算法为最优算法。二级标题...原创 2021-08-26 22:23:54 · 106 阅读 · 0 评论 -
C语言链表
链表链表定义链表是一种常用的数据结构,链表类似于数组可以连续存储数据,但链表在物理地址上不是连续的,它是通过链表的指针域来存储不同节点的地址,将数据存储在数据域中(头节点是没有数据域的),而链表的最后一个节点的的指针域存放的指针存放的是NULL空地址。通链表可以方便的对我们的数据进行查找,遍历,删除,修改等等操作。为什么要使用链表为什么要使用链表?前面说了链表是类似与数组这种结构类型。链表解决了数组存在的许多问题,例如:数组的长度无法改变,数组元素替换删除复杂,无法存储多种类型的元素。创建链表#原创 2021-08-05 23:14:54 · 91 阅读 · 0 评论