排序
The Laughing Uncle
专业踩各种坑
展开
-
八大排序之插入排序(直接插入排序 & 希尔排序)
文章目录插入排序直接插入排序二分插入排序希尔排序 插入排序 插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序可以分为直接插入排序和希尔排序。 直接插入排序 相信大家都玩过扑克牌(即使没玩过,也听说过)。 当我们手里有第一张牌的时候,随便放 当有第二张牌的时候,与第一张...原创 2018-10-31 21:23:41 · 198 阅读 · 0 评论 -
八大排序之选择排序
思想: 每一趟都从待排序的数列中选择一个最大(最小)的,放在数列的最后一个位置(或起始位置)直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。 图解: 例:9 5 3 4 6 2 8 1 7 0 #include <stdio.h> #include <string.h> void Swap(int *p1, int *p2) { i...原创 2018-08-13 15:41:08 · 163 阅读 · 0 评论 -
八大排序之堆排序
堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。 堆排序比较简单 先创建一个大堆(如何创建堆) 将堆顶元素与最后一个元素换外置后,在进行向下调整 再将堆顶元素与倒数第二个元素换位置,进行向下调整 以此类推 void AdjustDown(int arr[], int size, int root) { if (root * 2 + 1 >= size...原创 2018-10-31 21:55:56 · 293 阅读 · 0 评论 -
八大排序之快速排序
快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),简称快排。 基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 通俗的说,就是先选一个标准值,比标准值小的放在左边,比标准值大的放在...原创 2018-11-02 19:53:02 · 282 阅读 · 0 评论 -
八大排序之归并排序
归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 我们可以这样简单的理解:将一个数组分为两个数组arr1 arr2,假如这两个数组有序,再将这两个数组归并为一个数组,并确保归并后的数组也有序。关键就是如何让arr1 arr2有序,我们可以对这两个数组分别采用归并算法。以此类推 int arr[...原创 2018-11-02 20:50:01 · 148 阅读 · 0 评论