首页 > 编程语言 >c语言_十大排序算法

c语言_十大排序算法

时间:2023-07-22 22:34:04浏览次数:41  
标签:arr 十大 int 复杂度 元素 算法 序列 排序

1.冒泡排序

思想:通过比较相邻的元素并交换它们来排序。时间复杂度为O(n^2);

 

#include <stdio.h>
void bubble_sort(int arr[], int len) {
    int i, j, temp;
    for (i = 0; i < len - 1; i++)
        for (j = 0; j < len - 1 - i; j++)
            if (arr[j] > arr[j + 1]) {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
}
int main() {
    int arr[] = { 22, 34, 3, 32, 82, 55, 89, 50, 37, 5, 64, 35, 9, 70 };
    int len = (int) sizeof(arr) / sizeof(*arr);
    bubble_sort(arr, len);
    int i;
    for (i = 0; i < len; i++)
        printf("%d ", arr[i]);
    return 0;
}

 

2.选择排序

思想:通过选择最小的元素并将其放在第一个位置,然后选择第二小的元素并放在第二个位置,以此类推。时间复杂度为O(n^2);

 

 

3.插入排序

思想:将元素插入已经排序的序列中,时间复杂度为O(n^2)。

 

4.希尔排序

思想:是一种改进的插入排序算法,通过将序列分成若干个子序列来进行排序,时间复杂度为O(nlogn)。

 

5.归并排序

思想:是一种分治算法,通过将序列分成两个子序列,将它们排序,然后将它们合并成一个有序序列,时间复杂度为O(nlogn)。

 

6.快速排序

思想:是一种分治算法,它通过选择一个基准元素并将序列分成两个子序列来排序,时间复杂度为O(nlogn)。

 

7.堆排序

思想:是一种选择排序算法,通过将序列转换为一个堆来排序,时间复杂度为O(nlogn)。

 

8.计数排序

思想:是一种非比较排序算法,通过计算每个元素在序列中出现的次数来排序,时间复杂度为O(n+k),其中k是元素的范围。

 

9.桶排序

思想:是一种非比较排序算法,通过将元素分配到不同的桶中来排序,时间复杂度为O(n+k),其中k是元素的范围。

 

10.基数排序

思想:是一种非比较排序算法,通过将元素按照位数进行排序,它的时间复杂度为O(d(n+k)),其中d是元素的位数,k是元素的范围。

 

标签:arr,十大,int,复杂度,元素,算法,序列,排序
From: https://www.cnblogs.com/ZongZhe/p/17561398.html

相关文章

  • java list 随机排序
    java list随机排序 packagecom.vfsd.test;importjava.util.ArrayList;importjava.util.Collection;importjava.util.Collections;importjava.util.List;importjava.util.stream.Collectors;publicclassTest_List_Shuffle{publicstaticvoidma......
  • 2023“钉耙编程”中国大学生算法设计超级联赛(2)部分题解
    2023“钉耙编程”中国大学生算法设计超级联赛(2)部分题解7.201002 BinaryNumber可以发现,每个位置最多修改两次,再多了没有意义。当k为0时,无法修改直接输出。当n为1时,看k的奇偶性,若为奇数则将其翻转输出,否则直接输出。当n不为1时:如果给定的次数k小于序列中连续0串的个数,那一定......
  • 聊聊日志聚类算法及其应用场景
    阅读《基于FlinkML搭建的智能运维算法服务及应用》一文后,对其中日志聚类算法有了些思考。概述日志聚类,简而言之是对海量日志的分析;其分析处理链路可以分为如下流程:日志采集->预处理->分词和特征表示->聚类和标注。算法模型分析针对如上的链路流程做一个拆分叙述。日......
  • python算法编程
    Python算法编程1.简介Python是一种简洁而强大的编程语言,适用于各种应用场景,包括算法编程。算法是计算机科学的核心,它是解决问题的一种方法或步骤。在本文中,我们将探讨使用Python编写算法的基础知识,并提供一些代码示例。2.算法的基本概念算法由一系列步骤组成,用于解决特定的问......
  • Python使用ecdh算法交换共享秘钥
    dh_server.py:fromcryptography.hazmat.primitives.asymmetricimportecfromcryptography.hazmat.primitivesimportserializationimportsocketdefecdh_generater(received_public_key):#Generateprivatekeyprivate_key=ec.generate_private_key(ec......
  • 24点游戏编程算法流程图
    1、24点游戏怎么玩?2、24点游戏的规则3、24点算法窍门4、用C语言设计算法完成24点游戏的计算是什么?24点游戏怎么玩?1、拿一副牌,抽去大小王后(也可以把J/Q/K/大小王也拿去),剩下1~10这40张牌(以下用1代替A)。任意抽取4张牌(称为牌组),用加、减、乘、除把牌面上的数算成24。每......
  • 排序
    https://pic4.zhimg.com/v2-33a947c71ad62b254cab62e5364d2813_b.webp......
  • 根号 n 算法
    分块动态单点修改单点修改$O(\sqrt{n})$,区间查询$O(1)$动态区间修改加懒惰标记......
  • 算法学习笔记(26): 计算几何
    计算几何向量高一知识,略讲。向量外积若\(\vecx=(x_1,y_1),\vecy=(x_2,y_2)\),则有\(\vecx\times\vecy=x_1y_2-y_1x_2\)。或者表示为\(|\vecx||\vecy|\sin\theta\),其中\(\theta\)表示向量间的夹角。几何意义:两个向量构成的平行四边形的面积(可以......
  • 十大排序算法 Java版
    packagealgorithm;importjava.util.Collections;importjava.util.Vector;publicclassSort{//冒泡排序publicvoidBubbleSort(int[]a){booleanflag=true;for(inti=0;i<a.length;i++){flag=false;//用于判断上......