邻居好说话 之 冒泡排序
2017-06-17 09:44
253 查看
冒泡排序的主要思想就是:每次比较两个相邻的元素,如果它们比较大小之后,左右的顺序错误,就相互交换位置。
下面以从大到小排序为例,来讲一下它的思路:
第一轮首先处理第1个数和第2个数,使这两个数从大到小排列,然后在前次处理后的基础上处理第2个数和第3个数使其从大到小排列,以此类推,直到处理完第n-1个和第n个数,这样第一轮处理结束。
一个循环结束之后,得到的序列中的最后一个数,也就是第n个数必定是最小的数。
重复上面的步骤,进行第二轮的两两比较。一轮结束后,得到的第(n-1)个数就是列表中的第二小。
以此类推重复上面的步骤,直到第(n-1)轮之后,所有的数都排序好了。
下面举个简单的比较例子:
12,35,99,18,76
第一轮:
这一轮从左往右依次两两比较,进行四轮
35,12,99,18,76
35,99,12,18,76
35,99,18,12,76
35,99,18,76,12
这时候,12肯定就是最小的一个数,因为它比其它比较过的数字都小
第二轮:
这一轮,只需要比较12之前的四个数字,进行三轮两两比较
99,35,18,76,12
99,35,18,76,12
99,35,76,18,12
第三轮:
这一轮只需要比较18,12之前的三个数字,进行两轮两两比较
99,35,76,18,12
99,76,35,18,12
第四轮:
这一轮只需要比较35,18,12之前的两个数字的大小即可。
99,76,35,18,12
这时候,所有的比较就进行完了,最终结果就是上面这个。
我们可以看到,假设有n个数字作比较,那么大的循环轮数为(n-1)次,
而每一轮,进行两两比较的次数为 (n-已经排好序的i)次。
因此说,冒泡排序的核心算法就是 嵌套循环
代码如下:
下面以从大到小排序为例,来讲一下它的思路:
第一轮首先处理第1个数和第2个数,使这两个数从大到小排列,然后在前次处理后的基础上处理第2个数和第3个数使其从大到小排列,以此类推,直到处理完第n-1个和第n个数,这样第一轮处理结束。
一个循环结束之后,得到的序列中的最后一个数,也就是第n个数必定是最小的数。
重复上面的步骤,进行第二轮的两两比较。一轮结束后,得到的第(n-1)个数就是列表中的第二小。
以此类推重复上面的步骤,直到第(n-1)轮之后,所有的数都排序好了。
下面举个简单的比较例子:
12,35,99,18,76
第一轮:
这一轮从左往右依次两两比较,进行四轮
35,12,99,18,76
35,99,12,18,76
35,99,18,12,76
35,99,18,76,12
这时候,12肯定就是最小的一个数,因为它比其它比较过的数字都小
第二轮:
这一轮,只需要比较12之前的四个数字,进行三轮两两比较
99,35,18,76,12
99,35,18,76,12
99,35,76,18,12
第三轮:
这一轮只需要比较18,12之前的三个数字,进行两轮两两比较
99,35,76,18,12
99,76,35,18,12
第四轮:
这一轮只需要比较35,18,12之前的两个数字的大小即可。
99,76,35,18,12
这时候,所有的比较就进行完了,最终结果就是上面这个。
我们可以看到,假设有n个数字作比较,那么大的循环轮数为(n-1)次,
而每一轮,进行两两比较的次数为 (n-已经排好序的i)次。
因此说,冒泡排序的核心算法就是 嵌套循环
代码如下:
public class BubbleSort { public static void main(String[] args) { int a[] = { 96, 15, 67, 83, 16, 45 }; sort(a); for (int i = 0; i < a.length; i++) { System.out.print(a[i] + ","); } } public static void sort(int[] a) { int temp = 0; //i < a.length - 1:表示假设总共n个数字,排序好需要(n-1)次大的循环 for (int i = 0; i < a.length - 1; i++) { //a.length - 1 - i 表示:当前只需要在这个循环中执行几次两两对比 //次数为:当有i次执行,i个数的大小被排好,则我们需要n-i次两两对比 for (int j = 0; j < a.length -1 - i; j++) { if (a[j] < a[j + 1]) { temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } } } }
相关文章推荐
- (啊哈!算法)(第一章)邻居好说话——冒泡排序
- 邻居好说话:冒泡排序
- 【一周一算法】算法2:邻居好说话——冒泡排序
- 算法排序之邻居好说话--冒泡排序(Bubble Sort)
- 【啊哈!算法】算法2:邻居好说话——冒泡排序
- 邻居好说话:冒泡排序
- 邻居好说话:冒泡排序
- 邻居好说话—冒泡排序
- 邻居好说话——冒泡排序
- 邻居好说话——冒泡排序
- 轻松学算法2:邻居好说话——冒泡排序
- 【坐在马桶上看算法】算法2:邻居好说话:冒泡排序 推荐
- 【坐在马桶上看算法】算法2:邻居好说话:冒泡排序
- 【坐在马桶上看算法】算法2:邻居好说话:冒泡排序
- 【坐在马桶上看算法】算法2:邻居好说话:冒泡排序
- 算法2:邻居好说话:冒泡排序
- 【坐在马桶上看算法】算法2:邻居好说话:冒泡排序
- 字符串-03. 字符串的冒泡排序(20)
- 排序算法(1)—冒泡排序
- 网上邻居的内幕-关于NETBIOS理清楚概念的文章