原理:假设排序n个数,每次将相邻的两个数比较,将小的调到前头,一次循环以后,最大的就在最后面了。这样循环n-1一次以后,数组就会按照从小到大一次排列了。
//
// main.m
// 数组demo1
//
// Created by eric wang on 15/12/6.
// Copyright © 2015年 eric. All rights reserved.
//
#include <stdio.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
//c语言排序算法之冒泡排序算法
int a[10]={1,3,4,2,7,5,8,11,10,0};
int length=sizeof(a)/sizeof(a[0]);
for (int i=1; i<length; i++) {
for (int j=0; j<length-i; j++) {
/**
* 如果前面的比后面的大,交换位置
*/
if(a[j]>a[j+1]){
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
/**
* 打印一次循环以后的数组
*/
for (int k=0; k<length; k++) {
printf("%d ",a[k]);
}
printf("\n");
}
}
return 0;
}
排序结果如下:
1 3 2 4 5 7 8 10 0 11
1 2 3 4 5 7 8 0 10 11
1 2 3 4 5 7 0 8 10 11
1 2 3 4 5 0 7 8 10 11
1 2 3 4 0 5 7 8 10 11
1 2 3 0 4 5 7 8 10 11
1 2 0 3 4 5 7 8 10 11
1 0 2 3 4 5 7 8 10 11
0 1 2 3 4 5 7 8 10 11