首页 > 编程语言 >排序算法

排序算法

时间:2023-05-08 18:45:54浏览次数:45  
标签:sort int void while mid ++ 算法 排序

1.插入排序

void insert_sort()
{
    for (int i = 1; i < n; i ++ )
    {
        int x = a[i];
        int j = i-1;

        while (j >= 0 && x < a[j])
        {
            a[j+1] = a[j];
            j -- ;
        }
        a[j+1] = x;
    }
}

2.选择排序

void select_sort()
{
    for (int i = 0; i < n; i ++ )
    {
        int k = i;
        for (int j = i+1; j < n; j ++ )
        {
            if (a[j] < a[k])
                k = j;
        }
        swap(a[i], a[k]);
    }

}

3.冒泡排序

void bubble_sort()
{
    for (int i = n-1; i >= 1; i -- )
    {
        bool flag = true;
        for (int j = 1; j <= i; j ++ )
            if (a[j-1] > a[j])
            {
                swap(a[j-1], a[j]);
                flag = false;
            }
        if (flag) return;
    }
}

4.快速排序(最快)

void quick_sort(int l, int r)
{
    if (l >= r) return ;

    int x = a[l+r>>1], i = l-1, j = r+1;
    while (i < j)
    {
        while (a[++ i] < x);
        while (a[-- j] > x);
        if (i < j) swap(a[i], a[j]);
    }
    sort(l, j), sort(j+1, r);
}

5.归并排序

void merge_sort(int l, int r)
{
    if (l >= r) return;
    int temp[N];
    int mid = l+r>>1;
    merge_sort(l, mid), merge_sort(mid+1, r);
    int k = 0, i = l, j = mid+1;
    while (i <= mid && j <= r)
    {
        if (a[i] < a[j]) temp[k ++ ] = a[i ++ ];
        else temp[k ++ ] = a[j ++ ];

    }
    while (i <= mid) temp[k ++ ] = a[i ++ ];
    while (j <= r) temp[k ++ ] = a[j ++ ];
    for (int i = l, j = 0; i <= r; i ++ , j ++ ) a[i] = temp[j];
}

参考

标签:sort,int,void,while,mid,++,算法,排序
From: https://www.cnblogs.com/fghjktgbijn/p/17382796.html

相关文章

  • 算法基础上机实验——2023年5月8日
    01背包问题#include<iostream>usingnamespacestd;constintN=1010;intn,m;intv[N],w[N];intf[N];intmain(){cin>>n>>m;for(inti=1;i<=n;i++)cin>>v[i]>>w[i];for(inti=1;i<=......
  • 机器学习算法原理——逻辑斯谛回归
    文章目录逻辑斯谛回归二项逻辑斯谛回归模型极大似然估计多项逻辑斯谛回归模型总结归纳逻辑斯谛回归写在前面:逻辑斯谛回归最初是数学家Verhulst用来研究人口增长是所发现的,是一个非常有趣的发现过程,b站有更详细的背景及过程推导,在此不再赘述:https://www.bilibili.com/video/BV1N......
  • JQ拖拽排序
    /***TableDnDplug-inforJQuery,allowsyoutodraganddroptablerows*Youcansetupvariousoptionstocontrolhowthesystemwillwork*Copyright(c)DenisHowlett<[email protected]>*LicensedlikejQuery,seehttp://docs.jquery.com/L......
  • 电动汽车用内置式永磁同步电机基于查询表 的矢量控制算法, 自动生成?
    电动汽车用内置式永磁同步电机基于查询表的矢量控制算法,自动生成满足MTPA(最大转矩电流比/MTPV(最大转矩电压比)的dq轴电流参考值查询表。程序使用m脚本文件编写,将生成的查询表以C语言二维数组的形式输入到txt文本文件中,可直接复制到应用程序中,避免工程师对数据进行二次提......
  • 采用simulink仿真嵌入C语言实现了逆变器的搭建,整个仿真没有一个模块,所有算法均用C语言
    采用simulink仿真嵌入C语言实现了逆变器的搭建,整个仿真没有一个模块,所有算法均用C语言实现,并对C语言代码给出了详尽的注释。逆变器输出的电压THD仅有0.4%。可以根据这个例子写自己的算法,并把在simulink中写的代码直接移植到DSP或者别的控制器中的中断中,不需要做任何修改。ID:55200......
  • 在服务器中提交lammps计算时,用多少个核计算,才会使得自己和别人的运算会更快?是不是提交
    (摘自以下内容)下边我们做几组测试,并对比计算速度:(采用同一个模型,所含原子数:19144(算挺得多了))4个核——未超负荷运行100%情况下——1天能跑0.488ns=488ps26个核——超负荷10个核运行——1天能跑0.023ns=23ps56个核——超负荷40个核运行——1天能跑0.018ns=18ps126个核—......
  • 学习笔记 - 基础算法
    基础算法三分模板题P3382【模板】三分法doublelmid,rmid;doubleconsteps=1e-6;while(r-l>eps){lmid=(l*2+r)/3;rmid=(r*2+l)/3;if(F(lmid)>F(rmid))r=rmid;elsel=lmid;}cout<<l<<'\n';......
  • 冒泡排序
    目录汇编实现及推导过程高级语言实现纸上得来终觉浅,绝知此事要躬行汇编实现及推导过程;程序名称:;功能:冒泡排序,方法5:不用两两比较,第一位数和其余数比较,小就交换;=======================================assumecs:code,ds:data;排序;手推算法;;外层循环条件si=0;......
  • 计数排序就是这么容易
    文章目录前言1.计数排序(CountingSort)1.1.计数排序(CountingSort)2.原理2.1.步骤2.2.实例题目3.代码3.1.代码4.扩展阅读4.1.局限性前言声明:参考来源互联网,有任何争议可以留言。站在前人的肩上,我们才能看的更远。本教程纯手打,致力于最实用教程,不需要什么奖励,只希望多多转发支持......
  • C# DataGridView自定义排序
    privatevoiddgvScanFai_SortCompare(objectsender,DataGridViewSortCompareEventArgse){if(e.Column.Name=="Time"){stringcellValue1=e.CellValue1.ToString();stringcellValu......