java冒泡排序和选择排序详解

 更新时间:2021年07月02日 14:17:45   作者:Stars-Nine  
这篇文章主要介绍了java数组算法例题代码详解(冒泡排序,选择排序),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

1、冒泡排序

冒泡排序(Bubble Sorting)的基本思想是:通过对待

排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。

因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下
来没有进行过交换,就说明序列有序。

图解冒泡排序算法的过程

原始数组:3, 9, -1, 10, 20

第一趟排序

(1) 3, 9, -1, 10, 20 // 如果相邻的元素逆序就交换

(2) 3, -1, 9, 10, 20

(3) 3, -1, 9, 10, 20

(4) 3, -1, 9, 10, 20

第二趟排序

(1) -1, 3, 9, 10, 20 //交换

(2) -1, 3, 9, 10, 20

(3) -1, 3, 9, 10, 20

第三趟排序

(1) -1, 3, 9, 10, 20

(2) -1, 3, 9, 10, 20

第四趟排序

(1) -1, 3, 9, 10, 20

小结冒泡排序规则

(1) 一共进行 数组的大小-1 次 大的循环

(2)每一趟排序的次数在逐渐的减少

(3) 如果我们发现在某趟排序中,没有发生一次交换, 可以提前结束冒泡排序。这个就是优化

import java.util.Arrays;
public class BubbleSort {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
        int arr[]= {3,9,-1,10,-2};
        //第i+1趟排序,将最大的数排在最后
        int temp=0;//临时变量
        for(int i=0;i<arr.length-1;i++) {//定义第几轮排序
       	 for(int j=0;j<arr.length-1-i;j++) {
       		 if(arr[j+1]<arr[j]) {
       		  temp=arr[j];
       		 arr[j]=arr[j+1];
       		 arr[j+1]=temp;
       		 }
       		 }
        System.out.println("输出第"+(i+1)+"趟排序的结果");
        System.out.println(Arrays.toString(arr));
        }
     
        }
	}

运行结果:

输出第1趟排序的结果
[3, -1, 9, -2, 10]
输出第2趟排序的结果
[-1, 3, -2, 9, 10]
输出第3趟排序的结果
[-1, -2, 3, 9, 10]
输出第4趟排序的结果
[-2, -1, 3, 9, 10]

2、选择排序法

排序思路:

原始的数组 : 101, 34, 119, 1

第一轮排序 : 1, 34, 119, 101

第二轮排序 : 1, 34, 119, 101

第三轮排序 : 1, 34, 101, 119

说明:

1.选择排序一共有 数组大小 - 1 轮排序

2.每1轮排序,又是一个循环, 循环的规则(代码)

  • 2.1先假定当前这个数是最小数
  • 2.2 然后和后面的每个数进行比较,如果发现有比当前数更小的数,就重新确定最小数,并得到下标
  • 2.3 当遍历到数组的最后时,就得到本轮最小数和下标
  • 2.4 交换 [代码中再继续说 ]
import java.util.Arrays;
public class QuickSort {
    public static void main(String[] args) {
       //int []arr={ 8,3,2,1,7,4,6,5};
       int [] arr={101,34,109,1};
       quicksort(arr);
    }
    public static void quicksort(int []arr){
        for(int j=0;j<arr.length-1;j++) {
            int minindex=j;//假定当前下标为最小值下标
            int minnumber=arr[j];//假定当前元素为最小值
            for (int i = 1+j; i < arr.length; i++) {
                if (arr[i] < minnumber) {//若假定最小值并不是最小的
                    minnumber = arr[i];//重置minnumber
                    minindex = i;//重置minindex
                }
            }
            //将最小值交换
            arr[minindex] = arr[j];
            arr[j] = minnumber;
            System.out.println("第"+(j+1)+"轮");
            System.out.println(Arrays.toString(arr));
        }
    }
}

总结

本篇文章就到这里了,希望可以给你带来一些帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • spring常用注解开发一个RESTful接口示例

    spring常用注解开发一个RESTful接口示例

    这篇文章主要为大家介绍了使用spring常用注解开发一个RESTful接口示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-03-03
  • Java中的字符串用法小结

    Java中的字符串用法小结

    这篇文章主要介绍了Java中的字符串用法,实例总结了java中关于字符串操作的各种常用的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • java8之LocalDate的使用、LocalDate格式化问题

    java8之LocalDate的使用、LocalDate格式化问题

    这篇文章主要介绍了java8之LocalDate的使用、LocalDate格式化问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • Java Stream map, Collectors(toMap, toList, toSet, groupingBy, collectingAndThen)使用案例

    Java Stream map, Collectors(toMap, toLis

    这篇文章主要介绍了Java Stream map, Collectors(toMap, toList, toSet, groupingBy, collectingAndThen)使用案例,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • Hutool Java工具类库_ExcelUtil的使用

    Hutool Java工具类库_ExcelUtil的使用

    这篇文章主要介绍了Hutool Java工具类库_ExcelUtil的使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • java对象转换String类型的三种方法

    java对象转换String类型的三种方法

    在很多情况下我们都需要将一个对象转换为String类型。一般来说有三种方法可以实现:Object.toString()、(String)Object、String.valueOf(Object)。下面对这三种方法一一分析
    2013-11-11
  • 详解 Java静态代理

    详解 Java静态代理

    这篇文章主要介绍了 Java静态代理的相关资料,帮助大家更好的理解和学习Java代理的知识,感兴趣的朋友可以了解下
    2020-08-08
  • 解决 IDEA Maven 项目中"Could not find artifact" 问题的常见情况和解决方案

    解决 IDEA Maven 项目中"Could not find artifact" 

    这篇文章主要介绍了解决IDEA Maven项目中Could not find artifact问题的常见情况和解决方案,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • 深入分析JAVA Vector和Stack的具体用法

    深入分析JAVA Vector和Stack的具体用法

    这篇文章主要介绍了深入分析JAVA Vector和Stack的具体用法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • Spring如何使用通知 Advice 管理事务

    Spring如何使用通知 Advice 管理事务

    Spring 默认采用声明式事务管理(通过配置的方式) ,也可以实现编程式事务管理,这篇文章主要介绍了Spring使用通知Advice管理事务,需要的朋友可以参考下
    2023-06-06

最新评论