首页 >Java >java教程 >Java 中的选择排序

Java 中的选择排序

WBOY
WBOY原创
2024-08-30 15:30:50876浏览

Java中的选择排序是一种不断寻找未排序部分中最小元素并将其保留在开头的排序方法(用于升序排序)。该过程将重复进行,直到输入数组完成排序。此外,在选择排序中,我们将输入数组分为两个子数组,其中一个数组用于排序元素,另一个数组用于未排序元素。一开始,已排序的子数组中不会有任何元素。让我们在下一节中详细了解选择排序的工作原理。

选择排序在 Java 中的工作原理

选择排序以一种简单的方式工作,它从输入数组中保留两个子数组。他们是:

开始您的免费软件开发课程

网络开发、编程语言、软件测试及其他

  • 已排序的子数组以保留已排序的元素
  • 未排序的子数组,用于保留未排序的元素。

算法

以下是用于选择排序的算法

  1. 将最小 (MIN) 指针设置为位置 0。
  2. 从数组的元素列表中找到最小的元素
  • 将最小元素与位置 0 交换
  1. 将 MIN 指针移动到下一个位置
  2. 重复该过程,直到输入数组已排序。

让我们通过一个例子来理解选择排序。以下是必须排序的输入数组。粗体蓝色的元素将作为排序数组的一部分。

Java 中的选择排序

第 1 步:将 MIN 指针设置到第一个位置。所以,MIN指针指向15。

Java 中的选择排序

最小:= 15

第 2 步:通过与其余元素进行比较来找到最小元素。比较15和21,15是最小的。所以,在这种情况下,最小的不会改变。

Java 中的选择排序

最小:= 15

比较15和6,6是最小的。

Java 中的选择排序

最小:= 6

比较6和3,3是最小的。

Java 中的选择排序

最小:= 3

在这种情况下 3 也会更小,因为 19 大于 3。

Java 中的选择排序

最小:= 3

Java 中的选择排序

最小:= 3

最后,在本次迭代中,发现 3 是最小的。

第 3 步:将最小元素与位置 0 中的元素交换。

Java 中的选择排序

第 4 步: 将 MIN 指针增加到下一个位置。

Java 中的选择排序

第 5 步: 通过与其余元素进行比较来找到下一个最小元素。

Java 中的选择排序

最小:= 21

Java 中的选择排序

最小:= 6

Java 中的选择排序

最小:= 6

Java 中的选择排序

最小:= 6

Java 中的选择排序

最小:= 6

第 6 步: 将最小元素与位置 1 中的元素交换。

Java 中的选择排序

重复该过程,直到形成排序数组,如下所示。

Java 中的选择排序

用 Java 实现选择排序的示例

如上所述,选择排序基于查找最小值和交换。现在,让我们看看如何使用 Java 实现选择排序。

使用选择排序对数组中的元素进行排序的 Java 程序

代码:

import java.util.*;
public class SelSortExample {
//Method that implements Selectionsort
public static void selsort(int[] arr)
{
int n=arr.length; //length of the array
for(int i=0;i<n-1;i++)
{
int MIN=i; //set the first position as minimum
System.out.println("Sorting based on Number "+(i+1));
//Find the smallest element by comparing with the element in MIN position
for(int j=i+1;j<n;j++)
{
System.out.println("Comparing "+ arr[MIN] + " and " + arr[j]);
if(arr[j]<arr[MIN])
{
System.out.println(arr[MIN] + " is greater than " + arr[j] );
MIN=j;
}
}
//Swap the smallest element with element in MIN position
int temp=arr[i];
arr[i]=arr[MIN];
arr[MIN]=temp;
}
}
public static void main(String[] args) {
int[] arr= {15,21,6,3,19,20}; // input array
System.out.println("Elements in the array before Sorting: "+ Arrays.<em>toString</em>(arr));
<em>selsort</em>(arr);//calling the selection sort method
System.out.println("Elements in the array after Sorting: "+Arrays.<em>toString</em>(arr));
}
}

示例输出:

Java 中的选择排序

在上面的程序中,我们有两个方法——main方法和sell sort方法。 main 方法调用 sell sort 方法,传递输入数组作为参数。最小元素将被识别并与 MIN 指向的元素交换。

The selection sort can also be used where the input array is not defined in code. Let us see how it works using the below program.

Java Program to Sort the Elements using Selection Sort

Code:

import java.util.*;
public class SelectionSortExample
{
public static void main(String args[])
{
int n, i, j, tempvar;
Scanner <u>sc</u> = new Scanner(System.in); //To take the input from user
System.out.print("Enter the size of array : \n");
n = sc.nextInt();
int array[] = new int[n]; //<u>initialising</u> the array
System.out.print("Enter the elements that need to be inserted in the array : \n");
//inserting the elements to the array
for(i=0; i<n; i++)
{
array[i] = sc.nextInt();
}
System.out.print("array before Sorting: \n"+ Arrays.toString(array));
System.out.print("\nSorting begins here..\n");
for(i=0; i<n; i++)
{
for(j=i+1; j<n; j++)
{
if(array[i] > array[j])
{
tempvar = array[i];
array[i] = array[j];
array[j] = tempvar;
}
}
}
System.out.print("Array after Sorting is :\n");
for(i=0; i<n; i++)
{
System.out.print(array[i]+ " ");
}
}
}

Sample Output:

Java 中的选择排序

Here, the input elements given by the user will be compared with the temporary variable and swapped. The process will be repeated until a sorted array is formed.

Performance of Selection Sort

This sorting technique is used for its simplicity and certain other performance advantages over other more sorting techniques.

Java 中的选择排序

Conclusion

The selection sort does not work efficiently on large lists as it consumes more time for comparison. Selection sort is a method in which an input array will be divided into two subarrays in order to keep them sorted and unsorted elements. The minimum element in the array will be swapped with the element in the first position, and the process continues until a sorted array is formed.

以上是Java 中的选择排序的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn