证明冒泡排序的正确性

来源:百度知道 编辑:UC知道 时间:2024/06/14 18:09:09

证明:
不失一般性,设一有序集A={a_{1},a_{2},...,a_{n}},CardA=n>=2;a_{k} 属于 R(k=1,2,...,n).

考察第一个元素,这种情况是显然的;
考察第二个元素a_{2},若是成立a_{1}<>a_{2}依照算法排序,并得到有序集A_1;
考察第三个元素a_{3},若是成立a_{3}<>前一个元素,依照算法交换位置,再比较换序后第二个元素与第一个元素的大小,若是成立不等关系,依照算法换序,得到有序集A_2;
...
如此下去得到排序后的有序集A_n-1,便是排序后的有序集且保证单调性;
证毕

这个怎么证明嘛!就是一一比较然后大的数往下沉,然后小的数往上冒。如果有N个数,那么若两两都比较一次的话,就是N!次,
如果数组为a[100]的话,那么冒泡排序的C语言程序如下:
main()
{
int i,j,t,a[100];
printf("imput 100 numbers:");
for(i=0;i<100;i++)
scanf("%d",&a[i]);
for(i=0;i<99;i++)
for(j=0;j<99;j++)
if(a[j]<a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
printf("\nthe result is :\n");
for(j=0;j<100;j++)
printf("%d ",a[j]);
}

没办法,全部写出来.
一遍遍检查

冒泡