一、源码
#include<stdio.h>
#define M 5
void swap(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
int main()
{
int num[M] = { 88,77,66,55,44 }, i, end;
for (i = 0; i < M; i++)
printf("%d ", num[i]);
printf("\n\n");
for (i = 1; i < M; i++)
{
for (end = i-1; (end >=0)&&(num[end]>num[end+1]); end--)
{
swap(&num[end], &num[end + 1]);
}
}
for (i = 0; i < M; i++)
printf("%d ", num[i]);
return 0;
}
二、思路
原代码
for (i = 1; i < M; i++)
{
for (end = i; end >= 0; end--)
{
if (num[end] < num[end - 1] && (end - 1) >= 0)
{
swap(&num[end], &num[end - 1]);
}
}
}
优化后
for (i = 1; i < M; i++)
{
for (end = i-1; (end >=0)&&(num[end]>num[end+1]); end--)
{
swap(&num[end], &num[end + 1]);
}
}
优化后的代码相较于原代码主要区别是将end位置前移,使编译更加简单。