冒泡排序:重复走访要排序的元素列,依次比较两个相邻元素,如有顺序错误 (如从小到大)就把他们交换过来,走访元素的工作是重复进行的,直到没有相邻元素进行交换
如:
3 4 6 1 2 9
进行第一轮交换,3<4不交换,4<6不交换,6>1交换,6>2交换,6<9不交换
3 4 1 2 6 9
进行第二轮交换,3<4不交换,4>1交换,4>2交换,4<6不交换,6<9不交换
3 1 2 4 6 9
进行第三轮交换,3>1交换,3>2交换,3小于后面的数不交换
1 2 3 4 6 9
代码如下:
void fun(int arr[])
{
int i = 0;
int j = 0;
int t = 0;
for (i = 0; i <9; i++) //i要<9,不然下面arr[J+1]会越界
{
int k = 1;
for (j = 0; j <9- i; j++)
{
if (arr[j] > arr[j + 1])
{
t = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = t;
k = 1;
}
}
if (k == 0)
break;
}
}
int main()
{
int arr[10];
int i = 0;
for (i = 0; i < 10; i++)
{
scanf("%d", &arr[i]);
}
fun(arr);
for (i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
return 0;
}