冒泡排序

  

思想:一个待排数组从第一个元素开始,每个元素都与自己后一个元素进行比较(  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;
}
原文地址:https://www.cnblogs.com/xxaf/p/12677714.html