三种最简单的排序算法(直接插入排序、冒泡排序、简单选择排序)

本文介绍了三种基础排序算法:直接插入排序、冒泡排序和简单选择排序。直接插入排序通过每次从无序表中取出一个元素插入到有序表的合适位置实现;冒泡排序通过不断比较相邻元素并交换来完成排序;简单选择排序则是在每一轮中找到最小元素并放置到正确位置。这三种算法的时间复杂度均为O(N*N),空间复杂度为O(1)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、直接插入排序(稳定)

直接插入排序是最简单的排序方法之一,其基本思想是每次从无序表中取出一个元素,把它插入到有序表的合适位置,使有序表依然有序。直接插入排序是由两层嵌套循环组成的,外层循环标识并决定待比较的数值,内层循环为待比较数值确定其最终位置,其算法时间复杂度为O(N*N),空间复杂度为O(1)。

void insertSort(int a[], int len)  //本文默认排序为从小到大排序
{  
    int i,j,temp;  
    for (i = 1; i < len; i++) //外层循环标识待排序的数值  
    {  
        temp = a[i]; //保存第i个需要插入的数值
        for(j = i - 1; j >= 0 && a[j] > temp; j--)  //内层循环决定插入的位置(这个位置一定在0到i-1之间)
            a[j+1] = a[j];  //元素后移以提供插入空间
        a[j+1] = temp;  //查找到位置之后插入数据
    }        
}  

二、冒泡排序(稳定)

冒泡排序同样是最简单的排序方法之一,并且常被用来寻找数组中最值。冒泡排序算法运作如下:1、比较相邻的元素,如果第一个比第二个大,就交换他们两个;2、对每一对相邻元素做同样的工作,从开始第一对到结尾最后一对。一次遍历之后,最后的元素应该会是最大的数;3、针对所有元素重复以上的步骤,除了最后一个;4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。该算法的时间复杂度为O(N*N),空间复杂度为O

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值