赞
踩
排序算法是计算机科学中的基本概念,用于按特定顺序排列元素集合。这些算法采用输入数组或列表,并根据预先确定的比较规则重新排列其元素。它还使解决问题的简单方法。。
在我们进入代码之前,让我们直观地理解算法,以便轻松掌握算法。
让我们假设一个包含以下元素的未排序数组。
数组 = {9,1,8,4,7,2,}
第 1 步:选择数组中的最大元素,在我们的数组中选择最大元素 id 9。
第 2 步:将最大的元素与数组中的最后一个元素交换
第 3 步:交换元素后,将右侧指针向前移动一步,即 *Array.length-1 *,因为最大的元素被移动到数组的末尾
第 4 步:重复上述过程,直到我们的窗口大小减小到数组中的一个元素。
7已经在所在的位置,所以无需更改
6换到4的位置
4换到2的位置
2换到1的位置
数组中的所有元素都排序完成,我们得到下图
示例如下所示:
import java.util.Arrays; public class selectionSort { public static void main(String[] args) { int[] nums = {9,1,8,4,7,2,6}; selection(nums); System.out.println(Arrays.toString(nums)); } public static void selection(int[] nums){ for(int i=0;i<nums.length;i++){ int last = nums.length-i-1; int maximum=maximumIndex(nums,0,last); swap(nums,maximum,last); } } static int maximumIndex(int[] nums,int start,int end){ int max=start; for(int maxIndex=start;maxIndex<=end;maxIndex++){ if(nums[max]<nums[maxIndex]){ max=maxIndex; } } return max; } static void swap(int[] nums,int maximum,int last){ int temp=nums[maximum]; nums[maximum]=nums[last]; nums[last]=temp; } }
让我们假设一个包含元素 9,1,8,4,7,2,6 的数字数组
创建一个为Select 的方法nums 作为参数
public static void selection(int[] nums){...}
我运行一个简单的 for 循环来查找数组中的最大元素,我将其与数组中的最后一个元素交换,并将指针向前移动一步并返回 max
static int maximumIndex(int[] nums,int start,int end){
int max=start;
for(int maxIndex=start;maxIndex<=end;maxIndex++){
if(nums[max]<nums[maxIndex]){
max=maxIndex;
}
}
return max;
同样,我创建了一个 swap() 的方法,该方法将 nums 数组、最大元素和数组的最后一个元素作为参数。在交换数组中,我只是使用三个变量交换它们
static void swap(int[] nums,int maximum,int last){
int temp=nums[maximum];
nums[maximum]=nums[last];
nums[last]=temp;
}
我只是在选择方法中调用这两个方法,并使用 for 循环运行到数组的末尾
for(int i=0;i<nums.length;i++){
int last = nums.length-i-1;
int maximum=maximumIndex(nums,0,last);
swap(nums,maximum,last);
}
完成这些简单的步骤后,我将获得排序数组,我只需通过在 main 方法中调用选择来显示 nums 数组并在终端中打印数组。
public static void main(String[] args) {
int[] nums = {9,1,8,4,7,2,6};
selection(nums);
System.out.println(Arrays.toString(nums));
}
最终输出:[1, 2, 4, 6, 7, 8, 9]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。