递归:
#include <stdio.h>
void bubbleSort (int *array ,int num);
void printArray(int *array, int num);
void bubbleSort (int *array , int num)
{
if(num <= 2)
{
return;
}
int temp = 0;//临时变量
char times; //用于判断交换次数
for (int i = 0; i < num - 1; i++)
/* “num - 1” -> 防止 i+1 造成数组越界访问 */
{
if (array[i] > array[i+1])
{
temp = array[i];
array[i] = array[i+1];
array[i+1] = temp;
times++;
continue;
}
}
if (times == 0)
{
return;
}
bubbleSort(array,num - 1);
}
void printArray(int *array, int num)
{
for (int i = 0; i < num; i++)
{
printf("%2d ",*(array + i));
}
putchar('\n');
return;
}
int main(void)
{
int array[] = {9,10,3,4,2,5,1,7,8,6};
int num = sizeof(array) / sizeof(int);
printArray(array,num);
bubbleSort(array,num);
printArray(array,num);
return 0;
}