排序算法: 快速排序: 时间复杂度O(nlogn) 空间复杂度1 适用于大多数排序,性能很高 不稳定排序 步骤描述: 取数组首元素为基准值。设置一个i指针指向首元素,再设置一个j指针指向尾元素。在i<j的前提下。从j开始往回找,遇到第一个比基准值小的数,将该元素与基准值交换,i++;再从i往后找,遇 ...
分类:
编程语言 时间:
2019-12-08 10:42:15
阅读次数:
76
希尔排序 -- 插入排序中的一种,也叫缩小增量排序,是不稳定排序。 适用于顺序存储 排序思想 1、将乱序元素分成 d1 组(组内元素和往后数d1个的元素为一组,每一组组内元素并不相邻) 2、对每一分组内元素进行直接插入排序 3、将全部元素再分成 d1/2 组(取下界) 4、对每一分组元素进行直接插入 ...
分类:
编程语言 时间:
2019-11-29 15:57:20
阅读次数:
79
堆排序 2019-11-10 11:45:11 by冲冲 1、概念 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。 堆 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子 ...
分类:
编程语言 时间:
2019-11-10 17:42:38
阅读次数:
82
排序大法总结 这里的排序都是一些函数调用,默认为int类型,从小到大,第一个参数为头指针,第二个为数组长度. 直接选择排序 时间复杂度为 $$O(n^{2})$$ 是不稳定排序. 思路: 每次选出待排区间的最值,放在第一个. 冒泡排序 时间复杂度在最坏以及平均情况下下为 ),最好情况下为 ),是稳定 ...
分类:
编程语言 时间:
2019-10-18 19:05:17
阅读次数:
85
排序是数据处理中十分常见的操作,现代高级语言都有现成的n种排序算法。但了解它们的代码,对计算机思维有帮助。 简单选择排序 每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止,简单选择排序是不稳定排序。 无论数组原始排列如何,比较次数都不变;变的是交换次数。完全有序 ...
分类:
编程语言 时间:
2019-10-03 22:21:44
阅读次数:
119
一、选择排序法 简单选择排序是最简单直观的一种算法,基本思想为每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止,简单选择排序是不稳定排序。 for (int i = 0; i < arr.length - 1; i++) { ... 2 简单插入排序在最好情况下 ...
分类:
编程语言 时间:
2019-07-25 19:17:38
阅读次数:
105
// 不稳定排序#include using namespace std; int main() { int arr[100], tmp; for (int i = 0; i > arr[i]; for (int j = 0; j arr[k]) { tmp = arr[j]; arr[j] = a... ...
分类:
编程语言 时间:
2019-05-03 14:49:11
阅读次数:
153
排序:稳定排序算法,不稳定排序算法 如上图,若两个5排序之后交换了位置就是不稳定的,没有交换位置就是稳定排序 1.选择排序 冒泡是相邻的两个交换,选择法是首元素与最小的交换。 2.冒泡排序 冒泡算法的优化,在待排序数据处于一种趋于有序的情况,可以减少判断次数,比如:1,2,3,4,7,5,6 3.插 ...
分类:
编程语言 时间:
2019-02-03 00:51:33
阅读次数:
202
堆排序是利用堆这种数据结构而设计的一种排序算法,属于选择排序,它的最坏、最好、平均复杂度均为O(Nlog2^N),属于不稳定排序;堆是具有以下性质的完全二叉树:每个节点的值都大于或等于其左右孩子节点的值,称为大顶堆;每个节点的值都小于或等于其左右孩子节点的值,称为小顶堆;用简单的公式描述一下堆的定义 ...
分类:
编程语言 时间:
2018-12-31 22:39:18
阅读次数:
329
选择排序是不稳定排序,时间复杂度为O(n^2)。 选择排序类似插入排序,把数组分为两部分,一部分已经排好序,一部分未排序。 刚开始的时候所有的元素都未排序,已排序的部分为空。就好像你手里有十张牌,左手有零张,右手有10张。每次从右手的牌中取最小的一张插入到左手的牌末尾,右手的牌插完了,排序也完成了。 ...
分类:
编程语言 时间:
2018-12-08 15:39:02
阅读次数:
207