#include <stdio.h>
int main()
{
int i, j, k, temp;
int buffer[3] = {3,2,1};
/*
要求: 将数组按照从小到大的顺序进行排序
思路: 从第一个数开始,将每一个数和相邻的数进行比较,如果这个数比后一个数大,就交换他们的位置
第一轮排序就能选出最大的数,并且将它放在最后一个位置
第二轮排序就能选出第二大的数,并将它放在倒数第二个位置,这样从倒数第二个位置开始就是排序好的数
以此类推,直到第二个位置的数开始是排序好的数,当第二个位置开始都是排序好,第一个位置肯定就是最小的了
示例: 第一轮排序,筛选出最大数,需要比较2次
--> 2 3 1
--> 2 1 3
第二轮排序,筛选出第二大数,需要比较1次,最后一个数就不用进行比较了,肯定是最大的,第一个数也不用比较了,肯定是最小的
--> 1 2 3
*/
for(i=0; i<3-1; i++)
{
printf("第%d轮排序\r\n", i);
for(j=0; j<3-i-1; j++)
{
printf("buffer[%d]=%d, buffer[%d]=%d\r\n",j, buffer[j], j+1, buffer[j+1]);
if( buffer[j] > buffer[j+1] )
{
temp = buffer[j];
buffer[j] = buffer[j+1];
buffer[j+1] = temp;
}
printf("现在数组是:");
for(k=0; k<3; k++)
{
printf("%d,", buffer[k]);
}
printf("\n\n");
}
}
printf("现在数组是:");
for(k=0; k<3; k++)
{
printf("%d,", buffer[k]);
}
printf("\n\n");
return 0;
}
运行结果