#include
#include
/*****************************************************************
*功能描述:冒泡排序算法
*传入参数:num:需要排序的数组首地址, n:数组的元素
*传出参数:num:排序后的数组首地址,传入参数和传出参数空间复用,降低空间复杂度
*返回值: 无
****************************************************************/
void insert_sort(int *num, int n)
{
int tmp, i, j;
int change = 0;
/*判断参数的合法性,当指针为空或者数组中只有一个元素时,直接返回*/
if((num == NULL) || (n<2))
{
return;
}
for (i=n-1; i>0; i--)//i表示这次循环需要比较的次数
{
for (j=0; j
些元素中最大的数放入num[i]中;数组总元素为n,最 大索引为n-1;注意防止内存越界
{
change = 0;
if (num[j] > num[j+1])
{
tmp = num[j];
num[j] = num[j+1];
num[j+1] = tmp;
change = 1;
}
}
if (0 == change)//当一轮比较中,没有交换元素时,说明已经是有序表,直 接退出
{
break;
}
}
return;
}
int main(void)
{
int i;
int num[5] = {5, 4, 3, 2, 1};
printf("before:\n");
for(i=0; i<5; i++)
{
printf("num[%d]:%d\n", i, num[i]);
}
insert_sort(num, 5);
printf("after:\n");
for(i=0; i<5; i++)
{
printf("num[%d]:%d\n", i, num[i]);
}
return 0;
}