排序算法

本文深入讲解三种基础排序算法:冒泡排序、选择排序和插入排序的实现原理与代码细节。冒泡排序通过反复交换相邻元素达到排序目的;选择排序通过遍历找出最小元素并置于序列前端;插入排序则将新元素按大小插入已排序序列中。

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

1冒泡法排序:
for(int i = 0; i< n-1; i++)
for(int j = 0; j< n-i -1; j++)
{
if( a[j] > a[j+1])
std::swap(a[j], a[j+1])
}
原理:对一个数组中的元素进行相邻元素比较,前大后小就交换,这样相邻元素不停比较,最后将本次比较的最大值排在最后,因为n个数只要n-1次排序,随着排序的进行,后面比较排序的舒就会每次减少一个,这样就出现了n-i-1

2选择排序
for(int i = 0; i< n-1; i++){
int min = i;
for(int j = i + 1; j< n; j++)
{
min = a[j] > a[j+1]? j: min;
}
std:swap(a[i], a[min]);
}
原理:选择是进行遍历找到排序中的最小值,将其记录下来,然后将其与未排序号的数列的第一个元素进行交换,也就是每次从未排好的序列中取最小的将其放在未排序好的最前面

3插入排序
template
void InSert(T *a, int n){
int old =0 ,new;
for(new = 1; new <n ; new++){
T temp = a[new];
old = new;
while( old > 0 && a[old -1] > temp)
a[in] = a[old -1];
–old;
}
a[old] = temp;
}
原理:将数组分为未排和排了的两类,排列后的为old,为排的为new,将新元素插入时,与原来已经排序好的数组的元素的从最大到进行比较,直到比较比这个数不大,那么就插入这个位置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值