数组升序排列
#include<stdio.h>int main(){int a[1000];int i,j,n,t,k=0;scanf("%d",&n); //n值输入;for(i=0;i<n;i++)scanf("%d",&a[i]); //n个int类型的数据输入;for(j=n-1;j>0;j--)for(i=0;i<j;i++)if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}//嵌套循环解释如下(冒泡排序);for(i=0;i<n;i++){printf("%d ",a[i]);//排好序的int类型数据输出;k++;if(k%8==0)printf("\n"); //输出时8个数据一行;}return 0;}
冒泡排序就是从左到右比较相邻两个元素的大小,以升序为例,第一轮比较时如果前一个元素比后一个元素大,就交换两个元素的位置,依次比较,直到最后一个元素最大。第二轮比较时倒数第二个元素就会为第二大的数,就这样一轮一轮的比较,最后实现升序排列。
例如,数组中元素为22,44,77,33,88,11,55,66
第一轮比较如下,
由表可得,第一轮比较将最大数88置于最后一个位置a[7]。
第二轮比较如下,
由表可得,第二轮比较将第二大的数置于倒数第二个位置a[6]。
依次几轮比较可得出