![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序
牧童遥指杏花村丫
这个作者很懒,什么都没留下…
展开
-
简单选择排序
简单选择排序简单选择排序算法思想:在待排序数组中选出最小的(或最大)的与第一个位置的数据交换 然后在剩下的待排序数组中找出最小(或最大)的与第二个位置的数据交换,以此类推,直到第n-1个元素。1、时间复杂度:O(n^2)2、空间复杂度:O(1)3、稳定程度:不稳定代码示例:#include /*简单选择排序:在待排序数组中原创 2017-11-09 10:43:51 · 200 阅读 · 0 评论 -
堆排序
堆排序1、堆分为: (1)大根堆:(父总是大于子)整个堆中,左子树的数据和右子树的数据都比父结点的数据小。 (2)小根堆:(父总是小于子)整个堆中,左子树的数据和右子树的数据都比父结点的数据大。2、给出父结点n求孩子结点左子树:2*n+1右子树:2*(n+1)3、给出孩子结点n求父结点(n-1)/24、时间复杂度:O(nlog原创 2017-11-09 11:31:22 · 230 阅读 · 0 评论 -
直接插入排序
直接插入排序算法直接插入排序的基本思想是:第一次从R[0]~R[n-1]中选取最小值,与R[0]交换,第二次从R[1]~R[n-1]中选取最小值,与R[1]交换,....,第i次从R[i-1]~R[n-1]中选取最小值,与R[i-1]交换,.....,第n-1次从R[n-2]~R[n-1]中选取最小值,与R[n-2]交换,总共通过n-1次,得到一个按排序码从小到大排列的有序序列。#原创 2017-11-02 13:17:11 · 223 阅读 · 0 评论 -
希尔排序
希尔排序的基本思想:先取一个小于n的整数d1作为第一个增量,把全部数据记录分组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2=1(<…该方法实质上是一种分组插入方法比较相隔较远距离(称为增量)的数,使得数移动时能跨过多个元素,则进行一次比 较就可能消除多个元素交换。算法先将要排序的一组数按某个增量d原创 2017-11-04 19:16:54 · 193 阅读 · 0 评论 -
冒泡排序
冒泡排序算法思想:(1)比较相邻的元素。如果第一个比第二个大,就交换他们两个。(2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。(3)针对所有的元素重复以上的步骤,除了最后一个。(4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。代码实现:#include原创 2017-11-15 09:19:14 · 164 阅读 · 0 评论 -
归并排序
归并排序归并排序(MergeSort)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。算法描述:归并操作的工作原理如下:第一步:申请空间,使其大小为两个已经排序序原创 2017-11-22 09:17:35 · 320 阅读 · 0 评论 -
基数排序
基数排序1、基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort),它是通过每个数的各个位数,将要排序的元素分配至某些“桶”中,以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数。2、基本过程第一步假设原来有一串数值如原创 2017-11-23 11:17:19 · 256 阅读 · 0 评论 -
快速排序
代码实现:#include <iostream>using namespace std;//快速排序void QuickSort(int *arr, int len, int left, int right){ int i, j, t, tmp; if (left > right) { return; } tmp = arr[left]; i = ...原创 2018-08-19 19:35:44 · 221 阅读 · 0 评论