![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
简单算法
danteliujie
经过多年的折腾以后,我发现自己还是喜欢编程和软件的世界对新技术很有兴趣,不再局限于喜欢嵌入式的内容,发现整个软件世界其实都很有趣,每个领域都可以做到极致,都有很多挑战.
展开
-
常见排序算法速记
C 插入排序:抓牌插牌, - 简单插入排序,新牌从有序区右侧依次冒泡过来,又叫直接插入排序 - 折半(二分)插入排序,插入的时候用二分法确定位置D 堆排序: 用堆来挑高子. 左侧为堆(堆得层遍历表示),右侧为有序区,n-1轮{每次堆排序,挑出最大的,放到有序区的左侧},第一轮特殊G 归并排序: 从最开始的n组开始,相邻的组两两合并(同时排序)K 快速排序: 递归分大...原创 2019-11-04 22:21:12 · 366 阅读 · 0 评论 -
选择排序(Selection Sort)
选择排序(Selection Sort)思路:对n个元素进行n轮挑选,每次选出最小的一个元素,把每次挑选的胜出者排成一列.具体实现:-记录极值和极值的位置,在挑选的过程中不会优化剩余候选者的顺序-每次挑选会导致和m(剩余候选者数量)-1次比较-和冒泡排序的区别是使用了一轮查找之后再交换极值,只交换一次.void selectionSort(int* data原创 2017-12-28 17:27:02 · 386 阅读 · 0 评论 -
快速排序(Quick Sort)
快速排序(QuickSort):思路:递归二分,每次分出大小组(大组所有的数大于小组),然后递归处理大小组具体实现:-选择第一个元素为基准,以此为分组标准-使用两个游标(left和right)来往中间逼近,两个游标把整个序列分成三个部分,小者区,待考察区和大者区-算法为了减少整体移动,巧妙的利用了把第一个元素(基准)读取到变量以后留出的空位,-在最开始的时候,left指向的原创 2017-12-28 17:06:23 · 302 阅读 · 0 评论 -
冒泡排序(Bubble Sort)
冒泡排序(Bubble Sort):思路:对n个元素进行n轮挑选,每次选出最小的一个元素,把每次挑选的胜出者排成一列.具体实现:-在队列里面来不断交换来实现的,在挑选的过程中会优化剩余候选者的顺序-每次挑选会导致和m(剩余候选者数量)-1次比较 for(i=0;i<n;i++){//进行n轮挑选 for(j=i+1;j<n;j++){//以排第一的为基原创 2017-12-28 17:05:34 · 254 阅读 · 0 评论 -
堆排序(Heap sort)
堆排序(Heap sort)思路:进行n轮抽取,用堆(有序的二叉树)来管理无序区数据,每次抽取根节点到有序区,抽取后再做堆平衡堆的组织方式:数组第一个位置为根节点,父节点i的两个子节点分别放在i*2+1和i*2+2这里面要涉及到数组建堆(Heapify)算法原创 2017-12-31 15:10:22 · 302 阅读 · 0 评论 -
二分查找排序(binary search sort)
二分查找排序(binary search sort)思路:基于二分搜索算法(折半搜索)改良的插入排序进行n轮插入,每i轮执行后前i个元素有序,每轮插入过程就是用二分搜索算法找到插入位置,把其后的元素往后移动一格腾出一个位置原创 2017-12-31 22:58:35 · 1793 阅读 · 0 评论