冒泡排序原理:
就是像是水泡从池底网上冒或者是一个石块往下沉的情况类似。相邻元素之间两两比较,大的往后放,第一次完毕之后,最大值就被找到。
例如:

排序的规则是:从头开始,如果前面的数比后面的数大,则交换,否则指针想后移。
未优化:
#include<stdio.h>
void swap(int &a,int &b)
{
int c = a;
a = b;
b = c;
}
void Bubble_Sort(int arr[],int len)
{
for(int i = 0;i <len-1; i++)
{
for(int j = 0; j < len-1-i; j++)
{
if(arr[j] > arr[j+1])
{
swap(arr[j],arr[j+1]);
}
}
}
}
int main()
{
int arr[]={1,4,3,2};
int len=sizeof(arr)/sizeof(arr[0]);
Bubble_Sort(arr,len);
for(int i=0;i<len;i++)
{
printf("%d ",arr[i]);
}
}
冒泡排序的优化:完全有序的情况,只需要比较一遍就可以。
1.记录一下交换的次数,如果次数为0,说明完全有序
2.设置一个标志位,int flag=1
#include<stdio.h>
void swap(int &a,int &b)
{
int c = a;
a = b;
b = c;
}
void Bubble_Sort(int arr[],int len)
{
int flag = 1;
for(int i = 0;i <len-1; i++)
{
int flag = 1;
for(int j = 0; j < len-1-i; j++)
{
if(arr[j] > arr[j+1])
{
swap(arr[j],arr[j+1]);
int flag = 0;
}
}
if(flag == 1)
{
break;
}
}
}
int main()
{
int arr[]={12,24,13,2};
int len=sizeof(arr)/sizeof(arr[0]);
Bubble_Sort(arr,len);
for(int i=0;i<len;i++)
{
printf("%d ",arr[i]);
}
}
3357

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



