您的位置:首页 > 编程语言 > Java开发

Java排序算法--冒泡排序

2016-09-20 17:56 323 查看
今天面试被虐到了,问到冒泡排序,面试过后自己才想起来,反应慢了。为了避免自己犯同样错误,特记录下来。

冒泡排序思想就是相邻元素两两比较,然后把较大的往下移,交换元素顺序。看起来就是越来越小的元素排前面了,顾为冒泡。最底下的排好后,重复之前的操作,只不过这次不再需要考虑已经排好序的最底下的元素了。代码如下:

public static int[] maopao(int[] t){
for(int a=t.length;a>0;a--){//外层循环数组长度次
for(int b=0;b<a-1;b++){//内层循环比外层循环少一次,因为每次内层循环后,都会产生一个排好序的元素
if(t[b]>t[b+1]){//交换相邻元素
int tmp = t[b];
t[b] = t[b+1];
t[b+1] = tmp;
}
}
}

return t;
}
测试程序:

/**
* 输入数据都小于M值,假如M默认值是10
*/
public static final int M = 10;

public static void main(String[] args) {

int[] count = new int[M];
/**
* 假设输入数据是5,4,3,9,8,6,7
*/
Scanner sc = new Scanner(System.in);
System.out.println("请输入小于"+M+"的整数");
int c=0;
while(sc.hasNextInt()){
int i = sc.nextInt();
if(i==0){
break;
}
System.out.println("输入的数据是: "+i);
count[c++] = i;
}
maopao(count);
System.out.println("排序后count数组中元素:");
printCount(count);
}

/**
* @param count 元素都是正整数的int数组
*/
public static void printCount(int[] count){
for(int i=0;i<count.length;i++){
if(count[i]!=0){
System.out.print(count[i]+" ");
}
}
}


运行结果:

请输入小于10的整数
5
输入的数据是: 5
4
输入的数据是: 4
3
输入的数据是: 3
7
输入的数据是: 7
8
输入的数据是: 8
2
输入的数据是: 2
0
排序后count数组中元素:
2 3 4 5 7 8
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: