首页 > 其他分享 >常用排序

常用排序

时间:2024-06-10 17:21:54浏览次数:21  
标签:常用 int void 元素 序列 排序 复杂度

1冒泡排序(Bubble Sort)
时间复杂度: \(O(n^2)\)

void mp()//自定义mp()函数
{
    for(int i=1;i<=n-1;i++)
    {
        for(int j=1;j<=n-i;j++)
        {
            if(a[j]>a[j+1])//相邻元素比较,若逆序则交换(升序为左大于右,降序反之)
            {
                swap(a[j],a[j+1]);
            }
        }
    }

}

2选择排序(Selection sort)
讲解:它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。

最好复杂度:\(O(n^2)\)

最坏复杂度:\(O(n^2)\)

void sz()
{
    for(int i=1;i<=n-1;i++)
    {
        int minn=i;
        for(int j=1;j<=n-i;j++)
        {
            if(a[j]<a[minn])
            {
                minn=j;
            }
        }
        swap(a[j],a[minn]);
    }
}

3插入排序(Insertion Sort)
讲解:它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。

时间复杂度:\(O(N^ ( 1-2) )\)

void cr()
{
    for(int i=2;i<=n;i++)
    {
        int k=1;
        int tmp =a[i];
        while(a[k]<a[i])
        {
            k++;
        }
        for(int j=i-1;j>=k;j--)
        {
            a[j+1]=a[j];
        }
        a[k]=tmp;//插入
    }
}

4Sort排序
时间复杂度:\(O(nlogn)\)

bool cmp(int a,int b)
{
    return a < b;
}
int main()
{
    sort(a,a+n+1,cmp);
}

标签:常用,int,void,元素,序列,排序,复杂度
From: https://www.cnblogs.com/AZAjr09-123/p/18240826

相关文章

  • centos7常用的相关命令
    一、Fadora平台的代表作CentOS1.rpm:是用来安装离线安装包,不会自动安装依赖2.yum:可以离线安装或者在线安装软件,并且会自动安装依赖3..rpm:基于Fedora平台的软件安装包二、CentOS软件安装相关的命令1.rpm相关的命令    rpm-ivh<包名.rpm>  (不会自动安装依赖,一......
  • python常用函数
    python常用函数一、进制转换#字符串与ASCII码转换print(ord("A"))#65print(chr(65))#A#进制转换print(bin(78))#0b1001110print(oct(78))#0o116print(hex(78))#0x4eprint(int('4e',16))二、数学函数函数返回值(描述)abs(x)返......
  • 排序 - 归并排序(Merge Sort)
    将两个的有序数列合并成一个有序数列,我们称之为"归并"。归并排序(MergeSort)就是利用归并思想对数列进行排序。归并排序介绍从下往上的归并排序从上往下的归并排序归并排序实现从上往下的归并排序从下往上的归并排序归并排序的时间复杂度和稳定性归并排序时间复杂度归......
  • 归并排序(Merge_sort)
    归并排序:归并的意思是将两个数组合成为一个,而归并排序就是:将一个数组分为许多个,让多个数组按大小归并,直到归并为一个;基本思想为:将一个数组拆分为许多个两两结合的数组,然后逐步排序主要函数是将两个分开的数组排序成一个数组,需要两个指针指向两个数组开头,每次排列进去最小的......
  • Spring常用注解,自动扫描装配Bean
    1引入context命名空间(在Spring的配置文件中),配置文件如下:Xml代码xmlns:context="http://www.springframework.org/schema/context"http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-2.5.xsd......
  • 拓扑排序
    拓扑排序大家好,我是Weekoder!接上次的二分查找,我又打算写一篇关于拓扑排序的文章!本文涉及到的知识比较多,请确认已经掌握了以下知识:循环、输入、数组等基本语法STLvector容器的基本操作STLqueue队列的基本操作图论基本知识其中,第二条并不是必要的,只要你能用自己......
  • seaborn常用的10种数据分析图表
    内置示例数据集seaborn内置了十几个示例数据集,通过load_dataset函数可以调用。其中包括常见的泰坦尼克、鸢尾花等经典数据集。#查看数据集种类importseabornassnssns.get_dataset_names()importseabornassns#导出鸢尾花数据集data=sns.load_dataset('ir......
  • sqli-labs 靶场闯关基础准备、学习步骤、SQL注入类型,常用基本函数、获取数据库元数据
    Sqli-labs的主要作用是帮助用户学习如何识别和利用不同类型的SQL注入漏洞,并了解如何修复和防范这些漏洞。它提供了多个不同的漏洞场景,每个场景都代表了一个特定类型的SQL注入漏洞。用户可以通过攻击这些场景来学习和实践漏洞利用技术,以及相应的修复和防御措施。Sqli-labs......
  • L44---506.相对名次(java)--排序
    1.题目描述给你一个长度为n的整数数组score,其中score[i]是第i位运动员在比赛中的得分。所有得分都互不相同。运动员将根据得分决定名次,其中名次第1的运动员得分最高,名次第2的运动员得分第2高,依此类推。运动员的名次决定了他们的获奖情况:名次第1的运......
  • Android 13.0 Launcher3单层模式workspace中app列表页排序功能实现
    1.概述在13.0的定制化开发中,对于Launcher3的功能定制也是好多的,而对于单层app列表页来说排序功能的开发,也是常有的功能这就需要了解加载app数据的流程,然后根据需要进行排序就可以了,接下来就来实现这个功能如图:2.Launcher3单层模式workspace中app列表页排序功能实现的核心......