二〇一一年八月七日 23:11:06
冒泡排序法
说明问题:此算法是稳定排序法!
# include<stdio.h>
void sort(int * a, intlen)
{
int i, j;
int t;
for (i=0; i<len-1; ++i)
{
for (j=0; j<len-1-i; ++j)
{
if (a[j] > a[j+1])
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
}
int main(void)
{
int a[6] = {10, 2, 3, 7, -5, 7};
int i = 0;
printf("排序前:a[3]=%#xn", &a[3]);
sort(a, 6);
for (i=0; i<6; ++i)
{
printf("%d ", a[i]);
}
printf("n");
printf("排序后a[3]=%#x", &a[3]);
return 0;
}
在Vc++6.0中的输出结果是:
排序前:a[3]=0x12ff3c
-5 2 3 7 7 10
排序后a[3]=0x12ff3c
Press any key to continue
-------------------------------
总结:
7的地址和排序前的地址改变,说明了
冒泡排序法本身是稳定排序法,有两个
7不改变7原来的位置
--------------------------------