入门算法之冒泡排序
2016-08-13 00:33
246 查看
一、冒泡排序的原理:
相邻的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换
例子:
//内循环
从9开始第一次内循环:
第一次:9>0,9与0交换位置,数组t变成
第二次:9>1,9 与1交换位置,数组t变成
第三次:9>2,9与2交换位置,数组t变成
第四次:9>8,9与8交换位置,数组t变成
第五次:9>5,9与5交换位置,数组t变成
第六次:9>6,9与6交换位置,数组t变成
自此,第一次内循环就结束了,我们可以发现,数组t的长度为7,而内循环的次数为7-1=6
外循环
第二次,从0开始从左至右与相邻的数字比较,开始第二次内循环比较
第一次:0<1,0和1不发生交换,数组t变成
第二次:1<2,1和2不发生交换,数组t变成
第三次:2<8,2和8不发生交换,数组t变成
第四次:8>5,8和5发生交换,数组t变成
第五次,8>6,8和6发生交换,数组t变成
第六次,8 <9,8和9不发生交换,数组t变成
至此,第二次内循环结束,由于我写的数组例子不好,到此次循环,数组t已经从小打到排序结束,实际上,还是要进行第三次外循环,依旧从数组t的首位开始,依次相邻的两个相比,外循环的次数就等于数组的长度
——————————————————————————————- 总结:1、冒泡排序由两次组成,外循环次数为数组长度,内循环次数为数组长度-1
输出结果:
0
1
2
5
6
8
9
相邻的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换
例子:
int[] t = {9,0,1,2,8,5,6};
//内循环
从9开始第一次内循环:
第一次:9>0,9与0交换位置,数组t变成
int[] t = {0,9,1,2,8,5,6};
第二次:9>1,9 与1交换位置,数组t变成
int[] t = {0,1,9,2,8,5,6};
第三次:9>2,9与2交换位置,数组t变成
int[] t = {0,1,2,9,8,5,6};
第四次:9>8,9与8交换位置,数组t变成
int[] t = {0,1,2,8,9,5,6};
第五次:9>5,9与5交换位置,数组t变成
int[] t = {0,1,2,8,5,9,6};
第六次:9>6,9与6交换位置,数组t变成
int[] t = {0,1,2,8,5,6,9};
自此,第一次内循环就结束了,我们可以发现,数组t的长度为7,而内循环的次数为7-1=6
外循环
第二次,从0开始从左至右与相邻的数字比较,开始第二次内循环比较
第一次:0<1,0和1不发生交换,数组t变成
int[] t = {0,1,2,8,5,6,9};
第二次:1<2,1和2不发生交换,数组t变成
int[] t = {0,1,2,8,5,6,9};
第三次:2<8,2和8不发生交换,数组t变成
int[] t = {0,1,2,8,5,6,9};
第四次:8>5,8和5发生交换,数组t变成
int[] t = {0,1,2,5,8,6,9};
第五次,8>6,8和6发生交换,数组t变成
int[] t = {0,1,2,5,6,8,9};
第六次,8 <9,8和9不发生交换,数组t变成
int[] t = {0,1,2,5,6,8,9};
至此,第二次内循环结束,由于我写的数组例子不好,到此次循环,数组t已经从小打到排序结束,实际上,还是要进行第三次外循环,依旧从数组t的首位开始,依次相邻的两个相比,外循环的次数就等于数组的长度
——————————————————————————————- 总结:1、冒泡排序由两次组成,外循环次数为数组长度,内循环次数为数组长度-1
//以下由代码实现以上逻辑 public class Demo { public static void main(String[] args) { int[] t = { 9, 0, 1, 2, 8, 5, 6 }; // 外循环 for (int i = 0; i < t.length; i++) { for (int j = 0; j < t.length - 1; j++) { // 如果t[j]>t[j+1],则两两交换 // 定义一个临时变量temp储存t[j] if (t[j] > t[j + 1]) { int temp = t[j]; t[j] = t[j + 1]; t[j + 1] = temp; } } } // 输出排序后的数组t的结果 for (int a = 0; a < t.length; a++) { System.out.println(t[a]); } } }
输出结果:
0
1
2
5
6
8
9
相关文章推荐
- 算法导论 第2章 算法入门(直接插入排序、希尔排序、冒泡排序、合并排序)
- 算法初入门——冒泡排序
- 2013-5-13算法入门--冒泡排序
- 算法入门---java语言实现的冒泡排序小结
- 算法入门学习----1.1冒泡排序
- 算法入门学习----1.1冒泡排序
- 算法入门->冒泡排序->C/C++ 语言实现
- 算法入门学习----1.1冒泡排序
- 算法入门——冒泡排序
- 算法导论 第2章 算法入门(直接插入排序、希尔排序、冒泡排序、合并排序)
- 重温算法入门经典,PYTHON冒泡排序
- 算法入门学习----1.1冒泡排序
- c# 数据结构算法学习一:冒泡排序
- 冒泡排序(bubble sort)算法实现
- 中文机械分词算法入门
- C#算法之“冒泡排序”
- 基于Jgap的遗传算法入门介绍
- 冒泡排序的算法分析与改进
- C# 算法之 冒泡排序
- 冒泡排序的算法分析与改进