冒泡排序

我姓韩我心寒 2016-12-09 09:09:18
请问大神这个是冒泡排序吗?我是刚接触java的,望大神能把思路告知一二,如果能把选择排序写出更好了
...全文
509 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
朔北冥 2016-12-18
  • 打赏
  • 举报
回复
冒泡,比较再交换。。。
cdcjk 2016-12-18
  • 打赏
  • 举报
回复
比较再交换,冒泡排序,就是前一个跟后一个比较,也就0位和1位,1位和2位......n-1位和n位比较,再交换值,把最大或最小的那个元素先排到最后,需要走n-1趟。比较再交换
嘻哈路过 2016-12-17
  • 打赏
  • 举报
回复
排序的方法还有几个,可以去试试.
reupe 2016-12-15
  • 打赏
  • 举报
回复
是冒泡,只不过是从右向左冒泡
紫色动力 2016-12-11
  • 打赏
  • 举报
回复
冒泡其实也有好几种写法
m33002197 2016-12-10
  • 打赏
  • 举报
回复
是冒泡排序,我今天还特意看了一下子。。。
我姓韩我心寒 2016-12-10
  • 打赏
  • 举报
回复
————谢谢你了!
爱睡觉的阿狸 2016-12-09
  • 打赏
  • 举报
回复
引用 2 楼 m2200 的回复:
没错,冒泡排序,就是前一个跟后一个比较,也就0位和1位,1位和2位......n-1位和n位比较,再交换值,把最大或最小的那个元素先排到最后,需要走n-1趟。
打错了,是“错了”,不是“没错”。
爱睡觉的阿狸 2016-12-09
  • 打赏
  • 举报
回复
下面是直接排序和冒泡排序的两种简单实现:
public class TestPaiXu {

	public static void main(String[] args) {
		int[] array = {3,2,6,1,5,9,8,-2};
		zhijie(array);
		maopao(array);
	}
	
	//直接排序
	public static void zhijie(int[] array){
		for(int i=0;i<array.length-1;i++){
			int temp;
			for(int j = i+1;j<array.length;j++){
				if(array[i]>array[j]){
					temp = array[i];
					array[i] = array[j];
					array[j] = temp;
				}
			}
		}
		
		for(int a : array){
			System.out.println(a);
		}
	}
	
	//冒泡排序
	public static void maopao(int[] array){
		for(int i=0;i<array.length-1;i++){
			int temp;
			for(int j = 0;j<array.length-1-i;j++){
				if(array[j]>array[j+1]){
					temp = array[j+1];
					array[j+1] = array[j];
					array[j] = temp;
				}
			}
		}
		
		for(int a : array){
			System.out.println(a);
		}
	}
}
爱睡觉的阿狸 2016-12-09
  • 打赏
  • 举报
回复
直接排序,需要走n-1趟,第一次拿第一个元素依次跟后面所有元素比较,将最大值或最小值排到第一位,第二次拿第二个元素跟后面所有元素比较,第n-1次最后两位比较。 比较一下你我的代码,你每一趟多对它自身判断了一次:
public static void main(String[] args) {
		int[] array = {3,2,6,1,5};
		zhijie(array);
	}
	
	public static void zhijie(int[] array){
		for(int i=0;i<array.length;i++){
			int temp;
			for(int j = i+1;j<array.length;j++){
				if(array[i]>array[j]){
					temp = array[i];
					array[i] = array[j];
					array[j] = temp;
				}
			}
		}
		
		for(int a : array){
			System.out.println(a);
		}
	}
suoocy 2016-12-09
  • 打赏
  • 举报
回复
引用 3 楼 qq_34540440 的回复:
如果要一组数字从小到大的顺序排序,假如第二位比第一位小,那么把小的放到最前面,然后再从第一位和第二位,第一位比第二位小,所以就从第二位和第三位开始排了,剩下的以此类推是吗?
二楼已经回复得很清楚了
我姓韩我心寒 2016-12-09
  • 打赏
  • 举报
回复
如果要一组数字从小到大的顺序排序,假如第二位比第一位小,那么把小的放到最前面,然后再从第一位和第二位,第一位比第二位小,所以就从第二位和第三位开始排了,剩下的以此类推是吗?
爱睡觉的阿狸 2016-12-09
  • 打赏
  • 举报
回复
没错,冒泡排序,就是前一个跟后一个比较,也就0位和1位,1位和2位......n-1位和n位比较,再交换值,把最大或最小的那个元素先排到最后,需要走n-1趟。
我姓韩我心寒 2016-12-09
  • 打赏
  • 举报
回复

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧