思想:一个待排数组从第一个元素开始,每个元素都与自己后一个元素进行比较( s[i]>s[i+1] //从小到大排序 ),大于后一个元素时两元素进行互换,以此类推,第一趟排序后整个数组中最大的元素已排在最末位。重复以上步骤。
初始数组:
0 1 2 3 4 5 6 7 8 9
9 4 6 1 3 2 5 7 8 0
第一趟排序后:
0 1 2 3 4 5 6 7 8 9
4 6 1 3 2 5 7 8 0 9
第二趟排序后:
0 1 2 3 4 5 6 7 8 9
4 6 1 2 3 5 7 0 8 9
每次排序后已排好元素不再进行排序,以此类推,当只剩最后一位时排序已完成。
c代码:
#include <stdio.h> #include <stdlib.h> void BubbleSort(int n,int s[]) { int temp; for(int i=n-1; i>0; i--) //第一层循环是去掉已排好的元素 { for(int j=0; j<i; j++) { if(s[j]>s[j+1]) { temp=s[j]; s[j]=s[j+1]; s[j+1]=temp; } } } } int main() { int n; int s[50]; scanf("%d",&n); for(int i=0; i<n; i++) { scanf("%d",&s[i]); } BubbleSort(n,s); for(int i=0;i<n;i++) { printf("%d ",s[i]); } return 0; }