数据结构与算法
Qt上位机开发
从事上位机软件商业应用开发6年,精通Qt编程,熟悉C++语言、C语言、TCP/UDP编程、多线程编程
展开
-
插入排序算法实现
思路很简单,先看代码#include <iostream>using namespace std;void InsertSort(int a[], int len){ for(int i = 1; i< len; i++) { int tmp = a[i]; for (int j=i-1;j=0;j--) ...原创 2020-03-23 09:51:23 · 183 阅读 · 1 评论 -
c++实现快速排序算法(递归)
快速排序是对冒泡排序的改进,是一种不稳定的排序算法,其时间复杂度是O(n),被认为是目前最好的一种内部排序方法。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。——此处摘自百度百科。Talk is cheap. Show m...原创 2020-03-15 22:17:12 · 1642 阅读 · 0 评论 -
二叉树的构造和递归算法
如果同时知道一颗二叉树的先序序列和中序序列,或者同时知道中序序列和后序序列,就能确定这颗二叉树。以下是通过先序序列和中序序列来确定二叉树。先序遍历(根-左-右):先访问根结点,再先序遍历左子树,再先序遍历右子树。中序遍历(左-根-右):先中序遍历左子树,再访问根结点,最后中序遍历右子树。后序遍历(左-右-根):先后序遍历左子树,再后序遍历右子树,最后访问根结点。...原创 2018-12-07 16:30:59 · 817 阅读 · 0 评论 -
二分查找法
采用二分法的条件:1、数据量很大的时候2、数据需要排好序3、需要找到某个值的索引二分,顾名思义就是折半,假设一个数组的长度为10,对于给定的值value,与位于序列中间的值mid开始比较,如果value小于mid,就在0到mid-1的索引之间继续判断中间值是否等于value。如果value大于mid,就在mid+1到9的索引之间判断中间值是否等于value。如果mid等于valu...原创 2018-12-07 15:22:03 · 397 阅读 · 0 评论 -
单链表构造、插入、打印、逆序实现
步骤:主程序在下面1、构造结点结构体typedef struct linkList{ int data; struct linkList *next;}LINKLIST,*list; data用于节点存储数据,struct linkList *next是结点的指针域。LINKLIST是结构体的别名,list是结构体的指针。2、初始化一个带头结点的单链表//初始...原创 2018-12-06 11:58:44 · 1925 阅读 · 0 评论 -
冒泡排序算法优化
当出现{10,8,9,15,28,39}这样的序列时,只需要一次排序过程就能完成从小到大的排序。即第一次排序后序列变为{8,9,10,15,28,39}。虽然已经完成排序,但还是会走完接下来的排序判断过程,这将造成效率的下降。通过对冒泡排序进行改进,在判断排序已经完成后,即跳出循环,可以解决效率问题。//冒泡排序改进版void bubbleSortModify(int(&...原创 2018-12-06 09:24:00 · 254 阅读 · 0 评论 -
冒泡排序和选择排序算法的实现
一 选择排序: 选择排序的工作原理是从 待排序的元素中选出最小或者最大的一个元素,存放在序列的起始位置,直到全部待排序的元素排完。这是一种不稳定的排序方法。比冒泡排序快。二 冒泡排序: 冒泡排序重复访问要排序的元素,依次比较两个相邻的元素。如果前一个元素大于后一个,或者小于,就把它们交换过来。重复的进行直到没有相邻元素需要交换,说明冒泡排序已经完成。时间复杂度为o(n2)。以下...原创 2018-12-05 10:53:03 · 485 阅读 · 0 评论 -
单链表的构造和使用
单链表 链表可用于存储数据,在嵌入式开发时会经常用到,下面使用以前做过的例子记录一下数据结构中单链表的实现的增删改查。#include <stdlib.h>#include <stdio.h> //初始化结构体typedef struct linklist{ int id;//信息 struct linklist *next; //指针域}Node...原创 2018-03-05 15:58:06 · 858 阅读 · 1 评论 -
linux下内核链表实现学生信息管理系统
内核链表 我们知道,内核链表是双向链表,在这里不详细介绍内核链表的概念,只列出demo并附上注释供需要的同学参考。下面使用内核链表完成基本的增删改查,实现简易的学生信息管理系统,拥有保存信息到txt文本的功能,和从txt中读取信息的功能。(内核链表的头文件可以百度直接下载)#include"kernel_list.h" //内核链表的头,只需加入内核链表的c文件,一起编译即可...原创 2018-03-05 09:34:03 · 2707 阅读 · 1 评论