
数据结构与算法
liming0931
不积小流,无以成江海
展开
-
单链表排序之选择排序(赞)
单链表排序是单链表的常见编程任务之一,也是面试中经常出现的题目。单链表排序的关键是交换算法,需要额外考虑。选择排序是比较直观的排序算法之一,这里就使用选择排序实现单链表的排序。如果需要对选择排序复习一下,传送门:算法导论:选择排序的原理与实现。LinkList SelectSort2(LinkList L){ LinkList p,q,small; int temp;转载 2012-07-08 15:36:46 · 20104 阅读 · 4 评论 -
冒泡排序
冒泡排序在一组需要排序的数组中,对两两数据顺序与要求顺序相反时,交换数据,使大的数据往后移,每趟排序将最大的数放在最后的位置上,数据的变化像冒泡一样往上升的。#include <stdio.h>void printArray(int arr[], int n){ int i; for(i = 0; i < n; i++) { ...原创 2018-09-03 14:59:00 · 238 阅读 · 0 评论 -
选择排序
基本思想:在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。 操作方法:第一趟,从n 个记录中找出关键码最小的记录与第一个记录交换;第二趟,从第二个记录开始的n-1 个记录中再选出关键码最小的记录与第二个记录交换...原创 2018-09-03 14:32:52 · 117 阅读 · 0 评论 -
链表——新建链表
#include <stdio.h>#include <stdlib.h>#include <string.h>struct node{ int data; struct node *pNext;};//新建nodestruct node * create_node(int data){ struct node *p...原创 2018-09-08 20:06:28 · 305 阅读 · 0 评论 -
堆排序
堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆性质:即子结点的键值或索引总是小于(或者大于)它的父节点。分类排序算法数据结构数组最差时间复杂度最优时间复杂度[1]平均时间复杂度最差空间复杂度 total, auxiliary转载 2012-07-18 18:20:19 · 876 阅读 · 0 评论 -
希尔排序
希尔排序,也称递减增量排序算法,是插入排序的一种高速而稳定的改进版本。希尔排序是基于插入排序的以下两点性质而提出改进方法的: 插入排序在对几乎已经排好序的数据操作时, 效率高, 即可以达到线性排序的效率但插入排序一般来说是低效的, 因为插入排序每次只能将数据移动一位 分类排序算法数据结构数组最差时间复杂度根据步长序列的不同而不同。 已转载 2012-07-18 18:16:05 · 1238 阅读 · 2 评论 -
归并排序
归并排序(Merge sort,台湾译作:合并排序)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 归并操作 归并操作(merge),也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作。归并排序算法依赖归并操作。 算法描述归并操作的过程如下: 申请空间,使其大小为两个已转载 2012-07-18 18:08:28 · 546 阅读 · 0 评论 -
排序算法——插入排序
插入排序插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。最早拥有排序概念的机器出现在1901至转载 2012-07-18 18:04:19 · 674 阅读 · 0 评论 -
寻找第K大的数的方法总结
from:http://www.cnblogs.com/zhjp11/archive/2010/02/26/1674227.html今天看算法分析是,看到一个这样的问题,就是在一堆数据中查找到第k个大的值。 名称是:设计一组N个数,确定其中第k个最大值,这是一个选择问题,当然,解决这个问题的方法很多,本人在网上搜索了一番,查找到以下的方式,决定很好,推荐给大家。转载 2012-07-18 10:52:29 · 1237 阅读 · 0 评论 -
排序算法——冒泡排序
摘自:wiki百科冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。冒泡排序对个项目需要O()的比较次数,且可以原地排序。尽管这转载 2012-07-18 17:19:11 · 732 阅读 · 0 评论 -
排序算法——选择排序
摘自:wiki百科选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾(目前已被排序的序列)。以此类推,直到所有元素均排序完毕。C语言实现void select_sort( int *a, int n){ r转载 2012-07-18 17:55:07 · 500 阅读 · 0 评论 -
数据结构系列文章之队列 FIFO
转载自https://mp.weixin.qq.com/s/ILgdI7JUBsiATFICyyDQ9wOsprey 鱼鹰谈单片机3月2日预计阅读时间: 6分钟这里的 FIFO 是先入先出的意思,即谁先进入队列,谁先出去。比如我们需要串口打印数据,当使用缓存将该数据保存的时候,在输出数据时必然是先进入的数据先出去,那么该如何实现这种机制呢?首先就是建立一...转载 2019-08-18 16:34:52 · 392 阅读 · 0 评论