排序
陌亿
这个作者很懒,什么都没留下…
展开
-
二分查找
二分查找有一天阿东到图书馆借了 N 本书,出图书馆的时候,警报响了,于是保安把阿东拦下,要检查一下哪本书没有登记出借。阿东正准备把每一本书在报警器下过一下,以找出引发警报的书,但是保安露出不屑的眼神:你连二分查找都不会吗?于是保安把书分成两堆,让第一堆过一下报警器,报警器响;于是再把这堆书分成两堆…… 最终,检测了 logN 次之后,保安成功的找到了那本引起警报的书,露出了得意和嘲讽的笑容。于是...原创 2020-04-12 15:49:01 · 636 阅读 · 0 评论 -
堆排
堆排思路:首先我们需要将所给的数组中的数组合成一个二叉树,然后在排序。排序我们使用建大堆的方法。话不多说,看代码:#include<stdio.h>#include<stdlib.h>void swap(int* a, int* b) { int t = *a; *a = *b; *b = t;}void print(int* a, int size) {...原创 2020-04-09 11:45:30 · 97 阅读 · 0 评论 -
快速排序
快速排序思路:1.确定一个基准值,2.比基准值小的放左边,比基准值大的放右边3.按照分治思想,将基准值左边的如同上面的方法,确定基准值,然后比较,直到两个相邻基准值中的数等于1或没有,将右边也同样处理。partion:1、Hover法:将最右边的数定位基准值,第一个数为begin,最后一个数为end,begin开始向右移,end向左移,begin遇到小于等于基准值的向右移,大于基准值停...原创 2020-04-09 10:03:02 · 89 阅读 · 0 评论 -
插入排序
插入排序思路:将数据分为两个部分,一部份为排序好的数据,一部分为还未排序的数据。每一步将一个待排序的记录,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。(就像我们玩扑克牌一样,每接一张牌,都要与手中的牌进行比较,放入合适的位置,当接完最后一张牌时,手中的牌已经有序)。时间复杂度:O(N^2)空间复杂度:O(1)稳定性:稳定的适用场景:数据量比较小的,接近有序的// 时间...原创 2020-03-21 23:21:54 · 80 阅读 · 0 评论 -
希尔排序
希尔排序希尔排序 希尔排序(shell sort)这个排序方法又称为缩小增量排序。该方法的基本思想是:先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插人排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有记录放在...原创 2020-03-22 12:02:57 · 67 阅读 · 0 评论 -
冒泡排序
冒泡排序冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。思路:每冒一次,将最大的数选出来放到最后。稳定性:稳定时间复杂度:O(N^2)空间复杂度:O(1)*// 稳定性:稳定// 时间复杂度:...原创 2020-03-22 12:17:00 · 224 阅读 · 0 评论