数据结构
星河Galaxy
这个作者很懒,什么都没留下…
展开
-
数据结构(2)
一 算法1.1 算法的五个特性:1.有穷性。一个算法必须在执行有穷步后结束,并且每一步在有穷时间内完成2.确定性。每种情况下执行的操作,都会有确切的规定,不会有二义性。3.可行性。所有操作都可以通过已实现的基本操作运算执行有限次来实现4.输入5.输出1.2 评价算法的基本标准1.正确性 2.可读性 首先算法是有利于人们理解和相互交流的,其次才是机器可行性3...原创 2018-10-13 09:01:07 · 170 阅读 · 0 评论 -
数据结构(线性表小结)
线性表是整个数据结构中的重要基础1.线性表中的逻辑结构是指数据元素之间的线性关系,在计算机中表示这种关系的两类不同存储结构是顺序存储结构(顺序表)和链式存储结构(链表)2.顺序表:元素存储关系的相邻位置反应了他们逻辑的线性关系,列入数组,可称为随机存储结构, 链表:是依靠指针来表示线性逻辑关系的,可称之为顺序存储结构。 顺序表和链表的比较:对于链表,除了常用的单链表...原创 2018-10-25 08:49:40 · 908 阅读 · 0 评论 -
数据结构与算法(优化快速排序)
正常的快速排序的理念就是,递归的把数组分为两半,进行排序,然后再合并,基础的排序算法就胡写了 写一下优化算法优化算法的理念就是双指针,一趟确定一个数的位置void Quick(int a[],int left,int right){ if(left<right) { int pivot = doSort(a,left,right); ...原创 2019-06-05 15:51:17 · 259 阅读 · 0 评论 -
数据结构与算法(堆排序)
堆是一种经过排序的完全二叉树,其中任一非终端节点的数据值均不大于(或不小于)其左孩子和右孩子节点的值。(注意,这里对同兄弟结点没有要求)堆排序的理念就是,利用大顶堆(小顶堆),用的完全二叉树的数据结构,根的数据是最大值(最小值),然后把根取出来,形成新的完全二叉树,但是堆可能不平衡,就需要再次排序堆,然后再取出根....代码如下堆排序比如要排序一个大小为10的数组 需要一个大小为11的...原创 2019-06-05 16:04:05 · 419 阅读 · 0 评论 -
数据结构与算法(希尔排序)
希尔排序其实就是插入排序的优化版本void ShellSort(int *a,int n){ int i,j,temp; int gap = n/2; while(gap>1) { for(i=gap;i<n;i=i++) { temp = a[i]; for(j=i...原创 2019-06-05 16:39:54 · 268 阅读 · 0 评论 -
数据结构与算法(插入排序)
话不多说 直接上代码void InsertSort(int *a,int n){ int i,j,temp; for(i=1;i<n;i++) { if(a[i]>a[i-1]) { temp = a[i]; for(j=i-1;a[j]<temp && j>=0;j--) { a[j+1] = a[j]; ...原创 2019-06-05 16:42:37 · 184 阅读 · 0 评论 -
数据结构与算法(归并排序)
归并排序在很多地方都用得到,总结就是把一个有n个元素的无序数组,看成n个有序数组,再把他们合并成有序数组# include <stdio.h>#define MAXSIZE 10void Merge(int *left,int lsize,int *right,int rsize){ int i,j,m; int temp[MAXSIZE]; i = j = m = ...原创 2019-06-05 16:56:20 · 220 阅读 · 0 评论