数据结构之冒泡排序
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; //该数组的一号单元没有赋值哦
所谓冒泡排序,可以想象成,恩,沸腾的热水。大的数慢慢往上冒,或者小的数慢慢往上冒,其实思想很简单,每一次排序把你想要的最大的数放在序列最后,或者每一个排序把你想要的最小的数放在序列的最前面即可。
比如如下的一个序列:(按从小到大的序列安置泡所在的位置)
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; } } } }
相关文章推荐
- 【数据结构与算法分析】证logX<X 对所有的X>0成立
- 数据结构课程设计--连连看
- 数据结构的理解和应用——红黑树
- Nginx的数据结构--字符串
- 《挑战程序设计竞赛》2.4.2 数据结构-并查集 POJ1182 2236 1703 AOJ2170
- 《挑战程序设计竞赛》2.4.1 数据结构-优先队列 POJ2431 3253 3614 2010(3)
- Day-9 用js实现数据结构中的排序
- 数据结构课程设计-12月30号
- 【数据结构】链栈的基本操作
- 【数据结构+算法】【(线性)动态规划】--- 求最长回文串的长度
- 数据结构问题集锦 - Find Median from Data Stream
- 数据结构学习笔记——线性表的逻辑结构
- 数据结构和算法经典100题-第30题
- 【数据结构】顺序栈的基本操作
- 数据结构-链表反置
- 数据结构:二叉树
- 数据结构:树
- 数据结构 JAVA描述(七) 图的遍历+最小生成树
- 数据结构:递归
- 数据结构_1:线性表: Vector