首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C++|计数排序

    说明 排序的定义 对一序列对象根据某个关键字进行排序。...术语说明 稳定 :如果a原本在b前面,而a=b,排序之后a仍然在b的前面; 不稳定 :如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面; 内排序 :所有排序操作都在内存中完成; 外排序 :...由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行; 时间复杂度 :一个算法执行所耗费的时间。...计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。 计数排序是一种稳定的排序算法。...计数排序使用一个额外的数组C,其中第i个元素是待排序数组A中值等于i的元素的个数。然后根据数组C来将A中的元素排到正确的位置。它只能对整数进行排序

    47420

    C++ 插入排序,冒泡排序和选择排序

    大学的时候学过C,现在已经忘得七七八八了,现在想再学一下C/C++。 刚试着重写/温习了3个最简单的排序算法。 插入排序:依次将右边未排序的元素插入到左边已排序序列的合适位置。...float* sort_insertion(float a[], int len_a) { /*插入排序 类似我们排序扑克牌*/ for(int i=1; i < len_a; i++)...;//大的往后退一位 a[j+1] = to_insert;//a[j] > to_insert 不成立时 j+1的值即是待插入的位置 } return a; } 冒泡排序和选择排序大学都学过...冒泡排序: 时间复杂度:O(n^2) float* sort_bubble(float a[], int len_a) { /*冒泡排序 依次比较相邻的两个元素,如果顺序错误就将它们的位置交换...: 时间复杂度:O(n^2) float* sort_selection(float a[], int len_a) { /*选择排序 依次将左边未排序序列中的最大元素,存放到右边已排序序列的左端

    1.2K20

    C++ 经典排序算法

    1.1.概述 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。...快速排序的平均时间复杂度为o(n*logn),至于为什么是o(n*logn)。且常数因子很小,所以就平均时间而言,快速排序是很好的内部排序方法。在待排序序列有序或逆序时不宜选用快速排序。...早了解和熟悉了排序过程后,我们发现,直接插入排序是一种稳定的原地排序算法。...4.折半插入排序 4.1.概述 折半插入排序是对直接插入排序的简单改进,对于直接插入排序而言,当第i-1趟需要将第i个元素插入前面的0~i-1个元素序列中时,总是需要从i-1个元素开始,逐个比较每个元素...所以在记录数较小、待排序序列基本有序情况下直接插入排序优于折半插入排序。此外,折半插入排序是不稳定的原地排序,实现起来也较复杂。 看了这么多比较经典的排序算法,有没有觉得算法真的是一个神奇的“道具”。

    98420

    C++】常用排序算法

    下面介绍几种常见的排序算法: 冒泡排序(Bubble Sort): 从待排序序列的第一个元素开始,两两比较相邻元素的大小,如果顺序不对则交换位置。 每一轮结束后,最大(或最小)的元素会移动到末尾。...插入排序(Insertion Sort): 将未排序序列的第一个元素插入已排序序列的正确位置。 从第二个元素开始,依次与前面的元素比较并插入到正确位置。...快速排序(Quick Sort): 选择一个基准元素,将序列分为比基准小的元素和比基准大的元素。 递归地对划分后的子序列进行快速排序。...归并排序(Merge Sort): 将序列递归地拆分成两个子序列,对子序列进行排序,然后合并两个有序子序列。 使用分治法思想,将排序问题分解为较小的子问题。...C++实现 #include #include #include // 冒泡排序 bubbleSort 两两比较 void bubbleSort

    7010

    C++ sort()排序详解

    sort()  在刷题的时候我们经常会碰到排序的问题,如果我们不使用一些排序的方法那我们只能手撕排序,这样就会浪费一些时间。...而且我们还需要根据需要去选择相关的排序方法:冒泡排序、快速排序、插入排序、希尔排序、归并排序、选择排序、堆排序、基数排序、桶排序。...其实STL中的sort()并非只是普通的快速排序,除了对普通的快速排序进行优化,它还结合了插入排序和堆排序。根据不同的数量级别以及不同情况,能自动选用合适的排序方法。...sort()的使用方法 头文件  在C++中使用sort()函数需要使用#include头文件。...algorithm意为”算法”,是C++的标准模版库(STL)中最重要的头文件之一,提供了大量基于迭代器的非成员模版函数。

    3.8K30

    C++实现冒泡排序

    冒泡排序介绍冒泡排序是一种简单的排序算法,原理如下:从待排序的数组的第一个元素开始,依次比较相邻的两个元素。如果前面的元素大于后面的元素,则交换这两个元素的位置,使较大的元素向后移动。...对除了已排序的最后一个元素外的剩余元素,重复以上步骤,直到整个数组排序完成。通过不断地比较和交换相邻元素,较大的元素会逐渐“冒泡”到数组的末尾,因此称为冒泡排序。...冒泡排序的空间复杂度为O(1),即不需要额外的空间来存储数据。在每一轮比较和交换操作中,只需要使用常数级别的额外空间来存储临时变量。因此,冒泡排序是一种原地排序算法,不会占用额外的内存空间。...经过n-1轮的循环之后,整个数组就被排序完成了。...C++具体实现#include using namespace std;void bubbleSort(int arr[], int n){ int i, j; for

    22521

    C++C++提高编程部分-泛型编程-STL

    ---- 相关视频——黑马程序员C++(167-263) ---- C++提高编程 本阶段主要针对C++泛型编程和STL技术做详细讲解,探讨C++更深层次的使用 模板 模板的概念 模板就会通用的模具,大大提高复用性...模板的特点: 模板不可以直接使用,它只是一个框架 模板的通用并不是万能的 函数模板 C++另一种编程思想称为泛型编程,主要利用的技术就是模板 C++提供两种模板机制,函数模板和类模板。...因此C++为了解决这种问题,提供模板的重载,可以为这些特定的类型提供具体化的模板。...STL初识 STL的诞生 长久以来,软件届就一直希望建立一种可重复利用的东西 C++的面向对象和泛型编程思想,目的就是复用性的提升 大多情况下,数据结构和算法都未能有一套标准,导致被迫从事大量重复工作...set容器排序 学习目标: set容器默认排序规则为从小到大,掌握如何改变排序规则。 主要技术点: 利用仿函数,可以改变排序顺序。

    2.6K10

    C++编程简介

    目录 一、C++编程简介 学习 C++,需具备的基础 二、目标 1.单一 Class 的设计,叫做 Object Based(基于对象) 2.Object Oriented(面向对象) 三、C++ 的历史...四、C++ 演化 1.这个语言有这些版本 2.学习 C++,可以分为语言的部分和标准库的部分 五、必看书籍 一、C++编程简介 面向对象是种观念,我们用这种观念来写程序。...以良好的方式编写 c++ class c++代码里面最重要的每一个单元,就是一个 class。...C++ 11(2.0) 2011 年才出现 2.0。 C++ 14 2014 年又有个小版本。 不必在乎版本,大部分程序员用的是 C++ 98。...如果一个 c++程序员不怎么用标准库的话,不能算是一个合格的好的 c++程序员,不能算是有生产力的 c++程序员。

    79710

    排序算法笔记(C++版)

    :1 3 5 7 9 2 4 6 8 0 此次排序耗时: 2us 执行了19次swap交换 排序结果为:0 1 2 3 4 5 6 7 8 9 待排序数据为:0 1 2 3 4 9 8 7 6...5 此次排序耗时: 1.1us 执行了10次swap交换 排序结果为:0 1 2 3 4 5 6 7 8 9 请按任意键继续. . . 2.选择排序 时间复杂度:O(n^2^)[最好],O(n^...:1 3 5 7 9 2 4 6 8 0 此次排序耗时: 1.1us 执行了9次swap交换 排序结果为:0 1 2 3 4 5 6 7 8 9 待排序数据为:0 1 2 3 4 9 8 7...:1 3 5 7 9 2 4 6 8 0 此次排序耗时: 0.3us 排序结果为:0 1 2 3 4 5 6 7 8 9 待排序数据为:0 1 2 3 4 9 8 7 6 5 此次排序耗时:...quicksort(x, mi + 1, hi);//对后缀递归排序 } 运行结果: 待排序数据为:1 3 5 7 9 2 4 6 8 0 此次排序耗时: 5.1us 排序结果为:0 1

    35530
    领券