冒泡排序
2014-09-08 00:07
85 查看
冒泡排序:
1.相邻元素两两比较,前者大于后者,彼此交换
2.从第一对到最后一对,最大的元素沉降到最后
3.针对未排序部分,重复以上步骤,沉降次大值
4.每次扫描越来越少的元素,直至不再发生交换
平均时间复杂度 O(N2)
稳定排序、对数据的有序性敏感
#include<stdio.h>
#define SIZE 10
#define swap(x,y,z) ((z)=(x),(x)=(y),(y)=(z))
void print(int arr[],int size){
int a;
for(a=0;a<size;a++){
printf("%d ",arr[a]);
}
printf("\n");
}
void bubble_sort(int arr[],int size){
int x,y;
do{
for(x=0;x<size-1;x++){
if(arr[x]>arr[x+1])
{
swap(arr[x],arr[x+1],y);
}
}
}while(--size);
}
int main(){
int arr[SIZE]={4,40,90,10,70,50,30,60,80,199};
bubble_sort(arr,SIZE);
print(arr,SIZE);
return 0;
}
1.相邻元素两两比较,前者大于后者,彼此交换
2.从第一对到最后一对,最大的元素沉降到最后
3.针对未排序部分,重复以上步骤,沉降次大值
4.每次扫描越来越少的元素,直至不再发生交换
平均时间复杂度 O(N2)
稳定排序、对数据的有序性敏感
#include<stdio.h>
#define SIZE 10
#define swap(x,y,z) ((z)=(x),(x)=(y),(y)=(z))
void print(int arr[],int size){
int a;
for(a=0;a<size;a++){
printf("%d ",arr[a]);
}
printf("\n");
}
void bubble_sort(int arr[],int size){
int x,y;
do{
for(x=0;x<size-1;x++){
if(arr[x]>arr[x+1])
{
swap(arr[x],arr[x+1],y);
}
}
}while(--size);
}
int main(){
int arr[SIZE]={4,40,90,10,70,50,30,60,80,199};
bubble_sort(arr,SIZE);
print(arr,SIZE);
return 0;
}