冒泡排序
程序员文章站
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趟扫描,每趟扫描需要求最大值,所以冒泡排序是一个双重循环:
外循环控制比较的趟数,内循环完成求最大值的过程。
每趟扫描都使大的数“下沉”,小的数像气泡一样“上浮” ,故称为冒泡排序。
上一篇: 【SSL】矩阵乘积
下一篇: React五之页面传参