欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

冒泡排序

程序员文章站 2022-06-16 09:21:48
...

冒泡排序的基本代码:(升序)

#include<stdio.h>
#include<stdlib.h>
#define N 10
int main()
{
    int a[N];  /*用于存放需要排序的数*/
    int i,j;  /*两个循环变量*/
    int temp;  /*中间变量*/
    printf("input %d numbers: \n",N);
    for(i=0;i<N;i++)
        scanf("%d",&a[i]);  /*外循环控制比较的次数*/
    for(i=0;i<N-1;i++)
    {
        for(j=0;j<N-i-1;j++)  /*内循用来寻找每趟的最大值*/
        {
            if(a[j]>a[j+1])  /*出现前打后小情况需要交换两个数的位置*/
            {
                temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
            }
        }
    }
    printf("the sorted numbers:\n");  /*输出排好序的各个元素*/
    for(i=0;i<N;i++)
        printf("%3d",a[i]);
    return 0;
}

冒泡排序算法的原理如下:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
注:
对于n个元素数组的冒泡排序,需要进行共n-1趟扫描,每趟扫描需要求最大值,所以冒泡排序是一个双重循环:
外循环控制比较的趟数,内循环完成求最大值的过程。
每趟扫描都使大的数“下沉”,小的数像气泡一样“上浮” ,故称为冒泡排序。

相关标签: 冒泡