算法之交换排序
一、概念
思想:
如果元素比较是逆序则交换元素。
1.冒泡排序
基本思想:基于简单交换思想
每趟不断将元素两两比较,按照需要是顺序判断是否需要进行交换。
void bubble_sort(SqList &L) { // 冒泡排序算法
int m,i,j; RedType x; // 交换时临时存储
for( m=1; m<=n-1;m++) { // 总共需要m趟
for(j=1;j<=n-m; m++) {
if(L.r[j].key>L.r[j+1].key) { // 发现逆序
x=L.r[j];L.r[j]=L.r[j+1]; L.r[j+1]=x // 交换
}
}
}
}
优点:每趟结束时,不仅能找到一个最大值到最后面的位置,还能理顺其他元素。
提高思路:如果某一趟比较没有进行交换顺序,则表明元素顺序已经达成。
void bubble_sort(SqList &L) { // 冒泡排序算法
int m,i,j,flag=1; RedType x; // 交换时临时存储,新增一个标记判断是否有进行交换
for( m=1; m<=n-1 && flag=1;m++) { // 总共需要m趟
flag = 0
for(j=1;j<=n-m; m++) {
if(L.r[j].key>L.r[j+1].key) { // 发现逆序
flag = 1 // 如果发生交换,标记符置为1,如果没有进行表换,flag保存为0
x=L.r[j];L.r[j]=L.r[j+1]; L.r[j+1]=x // 交换
}
}
}
}
2.快速排序
思路:
任取一个元素,所有比他大的一律方后面,比他小的一律方前面。形成左右两个子表
对各子表重新选择中心元素并依次规则调整
直到每一个子表的元素只剩一个
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)