选择排序复习
Posted 小智RE0
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了选择排序复习相关的知识,希望对你有一定的参考价值。
基本思想,先找到当前元素之后的数组中最小的元素,和当前元素交换位置即可.
练习:912. 排序数组
直接思想暴力法;
class Solution
public int[] sortArray(int[] nums)
//基本选择排序做法;
//数组的长度;
int n = nums.length;
for(int i =0;i<n-1;i++)
//初始定义当前的最小数位置;
int minNum = i;
//循环之后的元素找到最小元素;
for(int j =i+1;j<n;j++)
if(nums[j]<nums[minNum])
minNum = j;
//交换当前元素与最小元素位置;
swap(nums,i,minNum);
return nums;
//交换方法;
private void swap(int[] nums,int a,int b)
//简单的临时变量交换法;
int temp = nums[a];
nums[a] = nums[b];
nums[b] = temp;
基本思想没有问题,但是超时
简单优化
class Solution
public int[] sortArray(int[] nums)
int n = nums.length;
for(int i=0;i<n-1;i++)
//假设定义的最小值;
int minVal = nums[i];
//最小值索引;
int minIndex = i;
//在后面的数组元素中查询;
for(int j=i+1;j<n;j++)
if(nums[j]<minVal)
//索引以及值改变;
minVal = nums[j];
minIndex = j;
//交换当前数和最小值;
nums[minIndex] = nums[i];
nums[i] = minVal;
return nums;
实际效率也并不好,建议使用其他的排序算法
以上是关于选择排序复习的主要内容,如果未能解决你的问题,请参考以下文章