冒泡排序有三种写法,第一种严格意义上来说不是冒泡排序,只是简单的交换排序,效率低下,此处不说,只介绍第二和三种。
1.基本冒泡排序
//对表L做冒泡排序
void BubbleSort(SqList *L)
{
int i, j;
for(i=1;i < L->length;i++){
for(j=L->length-1;j >= i;j--){ //注意j是从后往前循环
if(L->r[j] > L->r[j+1]){
swap(L,j,j+1);
}
}
}
}
2.冒泡排序优化
若在循环结束之前记录已经有序,则剩下的循环就是浪费资源,因此对冒泡进行改进,加入一个标志来判断。
#include <stdbool.h>
void BubbleSort_opt(SqList *L)
{
int i,j;
bool flag=true;
for(i=1;i < L->length && flag;i++){
flag=false;
for(j=L->length-1;j >= i;j--){
if(L->r[j] > L->r[j+1]){
swap(L,j,j+1);
flag=true;
}
}
}
}
本文介绍了两种冒泡排序方法:基本冒泡排序和优化版冒泡排序。基本冒泡排序通过多次遍历数组实现元素间的比较与交换;优化版冒泡排序则引入了一个标志位,在每次遍历过程中检查是否进行了交换,如果没有则提前终止排序过程。
347

被折叠的 条评论
为什么被折叠?



