您的位置:首页 > 理论基础 > 数据结构算法

数据结构之冒泡排序

2015-12-31 12:09 260 查看
无聊写篇博客冷静一下。结束刚刚被数据结构支配的恐惧,还是虐虐冒泡排序玩玩

所谓冒泡排序,可以想象成,恩,沸腾的热水。大的数慢慢往上冒,或者小的数慢慢往上冒,其实思想很简单,每一次排序把你想要的最大的数放在序列最后,或者每一个排序把你想要的最小的数放在序列的最前面即可。

比如如下的一个序列:(按从小到大的序列安置泡所在的位置)

68,45,23,37,54,12,81,76

第一次冒:

68,45,23,37,54,81,76,12

第二次冒:

68,45,37,54,81,76,23,12

....

第七次冒:

12,23,37,45,54,68,76,81

OK 排序完毕

需注意的几个点

1.总共8个数,每次排序将最大的数放在最后,7次排序就将所有数排序完毕

2.已经有序的数字可以不加入比较

3.若一个序列从某个位置开始一直到最后已经有序,则不需要进行比较工作了!

代码(c++):

//学的数据结构,用下数据结构咯

#define MAXSIZE 20

typedef int KeyType;

typedef struct{

KeyType key[MAXSIZE+1];
//说白了就是一个整型数组。

int length;
//key数组的长度

}SqList; //该数组的一号单元没有赋值哦

void BubbleSort(SqList *list){		//千年老冒泡
int i,j,temp;
bool nice=false;
for(i=2;i<=list->length && !nice;i++){
nice=true;
for(j=1;j<=list->length-i+1;j++){<span style="white-space:pre">	</span>
if(list->key[j]>list->key[j+1]){<span style="white-space:pre">	</span>//若循环中一次都没有进行比较,那该序列肯定有序咯,那肯定nice
temp=list->key[j];
list->key[j]=list->key[j+1];
list->key[j+1]=temp;
nice=false;
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: