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

Java常用排序算法冒泡排序与选择排序总结

2017-06-07 22:17 543 查看

概述

排序算法有好多种,也在特殊的场景中,我们经常需要对我们的数据进行排序,这里对经典的排序做一个记录整理。

一冒泡排序

原理分析

冒泡排序其实就是对一组数以类似冒泡对形式,进行从大到小或者从小到大的排序,那么什么是冒泡呢?

其实也简单,比如有一组数字:3,9,6,2



以上图只比较了第一轮,会冒出一个较大大,依此类推进行比较。

以此比较两个数字,将较较小的数字一个一个冒上来,将相反的较大的数字往下沉,然后内层循环每一轮比较就会冒出来一个最大数字,这样有2层循环即可,外层循环完后,所有的数字就冒完了。

代码实现(java)

public class MPTest {
public static void main(String[] args) {
int [] numbers={3,9,6,2};
int temp=0;
for(int i=0;i<numbers.length-1;i++){
for(int j=0;j<numbers.length-1-i;j++){//内层循环一次冒泡出一个比较小的数上来
if(numbers[j]>numbers[j+1]){//如果第一个数字比第二个大则交换位置
temp=numbers[j];
numbers[j]=numbers[j+1];
numbers[j+1]=temp;
}
}
}
for(int i=0;i<numbers.length;i++){
System.out.println("第"+i+"个数字是:"+numbers[i]);
}
}

}


输出结果是:
第0个数字是:2
第1个数字是:3
第2个数字是:6
第3个数字是:9


二选择排序

原理分析

选择排序其实其实思路也是比较简单的,也是2层循环。

主要思路是记录一个最小值,然后内层循环如果有比它小的就跟这个最小值交换位置,这样就能确定第一位最小值,然后第二次循环也是如此,以此类推就能按照由小到大排序。

还是对这几个数字进行排序:3 9 6 2

第一次循环:2 9 6 3

第二次循环:2 3 6 9

代码实现(java)

public class XZTest {
public static void main(String[] args) {
int[] numbers = {3, 9, 6, 2};
int temp=0;
for (int i = 0; i < numbers.length; i++) {
int min = i;
for (int j = i + 1; j < numbers.length; j++) {
if(numbers[j]< numbers[min]){
min=j;
}
}
if(i!=min){
temp=numbers[i];
numbers[i]=numbers[min];
numbers[min]=temp;
}
}
for(int i=0;i<numbers.length;i++){
System.out.println("第"+i+"个数字是:"+numbers[i]);
}
}
}


输出结果是一样的:
第0个数字是:2
第1个数字是:3
第2个数字是:6
第3个数字是:9
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐