-
写在前面:
- 作为以后复习的依据,虽然是一个很简单的算法。
假设需要比较n个数据
-
顺序:
- 从小到大 注意:
- i和j一定是有联系的
-
第三种:
- 最简单的写法:(我是伞兵)
for(int i=0;i<num;i++)
{
for(int j=i;j<num;j++)
{
if(test[i]>test[j])
{
temp=test[j];
test[j]=test[i];
test[i]=temp;
}
}
}
但我觉得这一种可能有些问题,但我不知道问题是什么。
-
第一种:
-
可以想到这就是很典型的那种:
第1个和第2个,第2个和第3个,······第n-1个和第n个比较
第2个和第3个,······第n-1个和第n个比较
第3个和第4个,······第n-1个和第n个比较
······
第n-1个和第n个比较
代码实现:
for(int i=num-1;i>0;i--)//i实现比较次数的变化
{
for(int j=0;j<i;j++)//j实现所比较数据的下标的变化
{
if(test[j]>test[j+1])
{
temp=test[j+1];
test[j+1]=test[j];
test[j]=temp;
}
}
}
-
第二种:
-
这个可以理解为倒着开始比较:
第n个和第n-1个,第n-1个和第n-2个······第2个和第1个比较
第n个和第n-1个,第n-1个和第n-2个······第3个和第2个比较
第n个和第n-1个····第4个和第3个比较
······
第n个和第n-1个
代码实现:
for(int i=0;i<num;i++)//i实现比较次数的变化
{
for(int j=num-1;j>=i;j--)//j实现所比较数据的下标的变化
{
if(test[j-1]>test[j])
{
temp=test[j];
test[j]=test[j-1];
test[j-1]=temp;
}
}
}