Java冒泡排序与选择排序的差别
添加时间:2013-5-20 点击量:
前些天误把冒泡排序算作选择排序,好在博友及时斧正。今天就来说说这两者的差别。
冒泡排序
它反复地访问过要排序的数列,一次斗劲两个元素,若是他们的次序错误就把他们互换过来。访问数列的工作是反复地进行直到没有再须要互换,也就是说该数列已经排序完成。
代码如下:
1 public class nums {
2 public static void main(String[] args){
3 int []nums = {5,4,3,2,1};
4 for(int i = 0; i < nums.length; i++){
5 for(int j = 0; j < nums.length-i-1; j++){
6 if(nums[j] > nums[j+1]){
7 int temp = nums[j];
8 nums[j] = nums[j+1];
9 nums[j+1] = temp;
10 }
11 }
12 for(int x = 0;x < nums.length;x++){
13 System.out.print(nums[x]+,);
14 }
15 System.out.print(\n);
16 }
17 }
18 }
每一轮斗劲后的输出如下:
1 4,3,2,1,5,
2 3,2,1,4,5,
3 2,1,3,4,5,
4 1,2,3,4,5,
5 1,2,3,4,5,
从输出中可以很清楚的熟悉打听冒泡排序的算法流程。
选择排序
每一趟从待排序的数据元素中选出最小(或最大)的一个元素,次序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
代码如下:
1 public class nums {
2 public static void main(String[] args){
3 int []nums = {5,4,3,2,1};
4 for(int i = 0; i < nums.length; i++){
5 for(int j = 0; j < nums.length; j++){
6 if(nums[i] < nums[j]){
7 int temp = nums[i];
8 nums[i] = nums[j];
9 nums[j] = temp;
10 }
11 }
12 for(int x = 0;x < nums.length;x++){
13 System.out.print(nums[x]+,);
14 }
15 System.out.print(\n);
16 }
17 }
18 }
从代码中可以看出每轮斗劲中,nums[i]和数组中的每个元素都有作斗劲。
每一轮斗劲后的输出如下:
1 5,4,3,2,1,
2 4,5,3,2,1,
3 3,4,5,2,1,
4 2,3,4,5,1,
5 1,2,3,4,5,
从输出成果中还是很轻易看出它与冒泡排序在算法上的差别。
很是感激博友 啊超~的斧正,不然我可能永远都不知道我是错的。如有错误之处还望各位不吝赐教!
真正的心灵世界会告诉你根本看不见的东西,这东西需要你付出思想和灵魂的劳动去获取,然后它会照亮你的生命,永远照亮你的生命。——王安忆《小说家的十三堂课》
前些天误把冒泡排序算作选择排序,好在博友及时斧正。今天就来说说这两者的差别。
冒泡排序
它反复地访问过要排序的数列,一次斗劲两个元素,若是他们的次序错误就把他们互换过来。访问数列的工作是反复地进行直到没有再须要互换,也就是说该数列已经排序完成。
代码如下:
1 public class nums {
2 public static void main(String[] args){
3 int []nums = {5,4,3,2,1};
4 for(int i = 0; i < nums.length; i++){
5 for(int j = 0; j < nums.length-i-1; j++){
6 if(nums[j] > nums[j+1]){
7 int temp = nums[j];
8 nums[j] = nums[j+1];
9 nums[j+1] = temp;
10 }
11 }
12 for(int x = 0;x < nums.length;x++){
13 System.out.print(nums[x]+,);
14 }
15 System.out.print(\n);
16 }
17 }
18 }
每一轮斗劲后的输出如下:
1 4,3,2,1,5,
2 3,2,1,4,5,
3 2,1,3,4,5,
4 1,2,3,4,5,
5 1,2,3,4,5,
从输出中可以很清楚的熟悉打听冒泡排序的算法流程。
选择排序
每一趟从待排序的数据元素中选出最小(或最大)的一个元素,次序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
代码如下:
1 public class nums {
2 public static void main(String[] args){
3 int []nums = {5,4,3,2,1};
4 for(int i = 0; i < nums.length; i++){
5 for(int j = 0; j < nums.length; j++){
6 if(nums[i] < nums[j]){
7 int temp = nums[i];
8 nums[i] = nums[j];
9 nums[j] = temp;
10 }
11 }
12 for(int x = 0;x < nums.length;x++){
13 System.out.print(nums[x]+,);
14 }
15 System.out.print(\n);
16 }
17 }
18 }
从代码中可以看出每轮斗劲中,nums[i]和数组中的每个元素都有作斗劲。
每一轮斗劲后的输出如下:
1 5,4,3,2,1,
2 4,5,3,2,1,
3 3,4,5,2,1,
4 2,3,4,5,1,
5 1,2,3,4,5,
从输出成果中还是很轻易看出它与冒泡排序在算法上的差别。
很是感激博友 啊超~的斧正,不然我可能永远都不知道我是错的。如有错误之处还望各位不吝赐教!
真正的心灵世界会告诉你根本看不见的东西,这东西需要你付出思想和灵魂的劳动去获取,然后它会照亮你的生命,永远照亮你的生命。——王安忆《小说家的十三堂课》