1.冒泡原理
例子:从大到小排序1,-2,4,3,-5
主要是运用交换的原理,将大的换到前面,小的换到后面
2.代码实现
#include <stdio.h>
int main(){
//从大到小排序
int arr[]={1,-2,4,3,-5};
int i;
int t;//临时变量
for(i=0;i<4;i++){//第一轮交换
if(arr[i] < arr[i+1]){
t=arr[i];
arr[i]=arr[i+1];
arr[i+1]=t;
}
}
printf("\n");
for(i=0;i<5;i++){
printf("%d ",arr[i]);
}
for(i=0;i<3;i++){//第二轮交换
if(arr[i] < arr[i+1]){
t=arr[i];
arr[i]=arr[i+1];
arr[i+1]=t;
}
}
printf("\n");
for(i=0;i<5;i++){
printf("%d ",arr[i]);
}
for(i=0;i<2;i++){//第三轮交换
if(arr[i] < arr[i+1]){
t=arr[i];
arr[i]=arr[i+1];
arr[i+1]=t;
}
}
printf("\n");
for(i=0;i<5;i++){
printf("%d ",arr[i]);
}
for(i=0;i<1;i++){//第四轮交换
if(arr[i] < arr[i+1]){
t=arr[i];
arr[i]=arr[i+1];
arr[i+1]=t;
}
}
printf("\n");
for(i=0;i<5;i++){
printf("%d ",arr[i]);
}
printf("\n");
return 0;
}
3.运行结果
3.代码优化
#include <stdio.h>
void bubbleSort(int arr[],int len){
int i;
int j;
int t;//临时变量
for(i=0;i<len-1;i++){
for(j=0;j<len-1-i;j++){
if(arr[j] < arr[j+1]){
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}
}
int main(){
//从大到小排序
int arr[]={1,-2,4,3,-5,101,30,100,90};
int i;
int len=sizeof(arr)/sizeof(int);//数组个数
bubbleSort(arr,len);
for(i=0;i<len;i++){
printf("%d ",arr[i]);
}
printf("\n");
return 0;
}
4.运行结果