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

xiaoxiao2021-02-28  68

概述

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

一冒泡排序

原理分析

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

其实也简单,比如有一组数字: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
转载请注明原文地址: https://www.6miu.com/read-63300.html

最新回复(0)