Java选择排序法以及实例详解

yizhihongxing

Java选择排序法以及实例详解

选择排序是一种简单的排序算法,其基本思想是:每次从待排序的数组中选择最小值,将其放到数组的起始位置,然后从未排序的数组中选择最小值,将其放到已排序部分的下一个位置。依次类推,直到数组排序完成。

选择排序的Java实现

以下是Java实现选择排序的代码:

public class SelectionSort {
    public static void sort(int[] arr) {
        int n = arr.length;
        for (int i = 0; i < n - 1; i++) {
            int minIndex = i;
            for (int j = i + 1; j < n; j++) {
                if (arr[j] < arr[minIndex]) {
                    minIndex = j;
                }
            }
            int temp = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex] = temp;
        }
    }
}

首先,我们定义一个sort方法用于对传入的整型数组进行排序。然后,我们定义一个变量n,该变量存储待排序数组的长度。接下来,我们使用两个for循环进行排序:外部的for循环迭代数组中的每个元素,而内部的for循环则从待排序的部分中找到最小值的下标。最后,我们使用一个临时变量来交换当前元素和待排序部分的最小值。

示例1:对数组排序

让我们看一个简单的使用示例。下面的代码定义了一个包含一些整数的数组,并使用选择排序对其中的元素进行排序:

public class Main {
    public static void main(String[] args) {
        int[] arr = { 64, 25, 12, 22, 11 };
        SelectionSort.sort(arr);
        System.out.println("Sorted array:");
        for (int i : arr) {
            System.out.print(i + " ");
        }
    }
}

在上面的代码中,我们首先定义一个包含一些整数的数组。然后,我们调用SelectionSort中的sort方法,使用选择排序对其进行排序。最后,我们使用for循环遍历已排序的数组,并输出其元素。

示例2:对复杂数据结构进行排序

选择排序算法同样适用于对复杂数据结构进行排序,只需重写比较器即可。下面的代码定义了一个包含Person对象的数组,并使用选择排序对年龄进行排序:

import java.util.Arrays;
import java.util.Comparator;

public class Main {
    public static void main(String[] args) {
        Person[] arr = { new Person("Alice", 25), new Person("Bob", 18), new Person("Charlie", 32) };
        Arrays.sort(arr, new Comparator<Person>() {
            public int compare(Person p1, Person p2) {
                return Integer.compare(p1.getAge(), p2.getAge());
            }
        });
        System.out.println("Sorted array:");
        for (Person p : arr) {
            System.out.println(p);
        }
    }
}

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public String toString() {
        return name + " (" + age + ")";
    }
}

在上面的代码中,我们首先定义了一个包含Person对象的数组,并使用相应的比较器对其进行排序。这里,我们使用了Java 8中提供的Comparator接口,重写了其compare方法以实现按照年龄进行排序。最后,我们遍历已排序的数组,并输出每个元素的详细信息。

结论

选择排序虽然简单,但其并不是一种高效的排序算法。对于大规模数据排序,我们应该采用更为高效的排序算法,例如快速排序、归并排序。但是,由于它的简单性和易于实现,选择排序在某些情况下也许仍具有一定的应用价值。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java选择排序法以及实例详解 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 基于ajax实现文件上传并显示进度条

    下面是基于ajax实现文件上传并显示进度条的完整攻略: 1. 准备工作 在前端实现基于ajax的文件上传需要以下几个工具/库: FormData对象:用于创建一个表单数据对象,方便把文件和其他数据打包发送到服务器端。 XMLHttpRequest对象:用于创建异步请求,可以通过它向服务器端发送数据。 FileReader对象:用于读取本地文件并把它转换成ba…

    Java 2023年5月20日
    00
  • Spring MVC+mybatis实现注册登录功能

    下面是关于“Spring MVC+MyBatis实现注册登录功能”的完整攻略,包含两个示例说明。 Spring MVC+MyBatis实现注册登录功能 在本文中,我们将介绍如何使用Spring MVC和MyBatis框架实现注册登录功能。 步骤1:添加依赖 首先,我们需要在pom.xml中添加Spring MVC和MyBatis的依赖。以下是一个简单的依赖示…

    Java 2023年5月17日
    00
  • JDBC操作数据库的增加、删除、更新、查找实例分析

    JDBC操作数据库的增加、删除、更新、查找实例分析 Java Database Connectivity (JDBC) 是Java语言中用于在Java应用程序中连接和操作关系型数据库的标准API。它提供了一组Java接口,允许Java应用程序与各种关系型数据库进行通信,包括MySQL、Oracle、PostgreSQL等。 JDBC连接数据库 在使用JDBC…

    Java 2023年6月16日
    00
  • 详解Spring mvc的web.xml配置说明

    在Spring MVC中,web.xml文件是配置Spring MVC的重要文件之一。本文将详细讲解web.xml文件的配置说明,并提供两个示例说明。 web.xml配置说明 1. DispatcherServlet 在web.xml文件中,我们需要配置DispatcherServlet来处理Web请求和响应。下面是一个示例: <servlet>…

    Java 2023年5月18日
    00
  • 详解JAVA的控制语句

    详解JAVA的控制语句 在Java中,控制语句是实现条件执行和循环执行的基础。本篇文章将详细讲解Java中的控制语句,分别包括if else、while、do while、for、foreach等语句,以及这些语句的作用、语法、注意事项和示例说明。 if else语句 if else 语句是Java中最常用的控制语句之一,它用于实现基于条件的分支执行,如果条…

    Java 2023年5月23日
    00
  • Spring 数据库连接池(JDBC)详解

    Spring 数据库连接池(JDBC)详解 什么是数据库连接池 在开发 Web 应用程序时,通常会使用数据库进行数据存储和管理。当客户端通过应用程序访问数据库时,应用程序需要使用 JDBC 连接到数据库并执行查询或更新操作。在实际开发中,频繁地创建和关闭连接非常消耗资源并且会影响应用程序的性能。为此,使用连接池可以提高性能并减少资源消耗。 数据库连接池是管理…

    Java 2023年5月20日
    00
  • MyBatis配置文件的写法和简单使用

    MyBatis是一款优秀的持久化框架,它通过XML或注解将Java对象映射到关系数据库中的数据。一般来说,MyBatis的配置文件主要包括以下几个方面:数据源、事务管理、映射文件以及全局配置。 数据源配置 数据源是MyBatis配置文件中最基本的部分,我们需要在配置文件中指定数据源的连接信息。 <configuration> <enviro…

    Java 2023年6月1日
    00
  • JDBC SQL语法

    JDBC SQL语法可以分为四个部分:数据定义语言(DDL)、数据查询语言(DQL)、数据操纵语言(DML)和数据控制语言(DCL)。 数据定义语言 数据定义语言(DDL)用于定义和管理数据库对象,例如表、视图和索引等。常用的DDL语句有: CREATE CREATE用于创建数据库中的新对象,可以用来创建以下内容: 创建新表 创建新的视图 创建存储过程 创建…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部