前言
很简单
一、冒泡是什么?
太简单不想说
二、使用步骤
1.因为简单直接上代码
代码如下(示例):
/* 冒泡排序
1、首先先从一群数组中找一个最大的放在前面,
2、然后再找第二个最大的。
*/
# include<stdio.h>
int main(){
int a[10]={10,52,63,98,8,3,5,7,11,2};
int length=10;
int i,j;
int temp;
for(i=1;i<length;i++) //注意:i从1开始,若从0开始的话,会造成数组溢出
for(j=0;j<length-i;j++)
{
if(a[j]>a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
for(i=0;i<length;i++)
printf("%d ",a[i]);
}
//就用了3分钟写完,好简单。
三、本人易错点
错误原因:数组越界了,导致数组之外的数也来参加比较。
假设a[4]之后的值为0,那么for(j=0;j<5;j++),中a【4+1】也来参加比较,所以最后为0 1 3 5 66 99.但是你输出5个数,所以99没了,只输出0 1 3 5 66.
以后你想方便你可以写成for(j=0;j<4;j++),这样既不会越界,又全对,只是算法没有优化而已。
【注意:这种问题一般不出现(我换了个数组就没事了,所以看来这种错误出现几率很小,但是事实上你就是错的),然后你就一直按照错误的写法来写,一旦出现就玩完了,你就找不到错误,因为你总是感觉这种写法是不会出现错误的】
【所以以后写代码,尤其是写算法时,要按照规矩来写,不要乱来,这种数组越界现象我专门请教老师才看出来,我还一直以为是全局变量的缘故】